pdf-oxide 0.3.24 → 0.3.28

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/lib/builders/annotation-builder.d.ts +199 -0
  2. package/lib/builders/annotation-builder.d.ts.map +1 -0
  3. package/lib/builders/annotation-builder.js +318 -0
  4. package/lib/builders/annotation-builder.js.map +1 -0
  5. package/lib/builders/conversion-options-builder.d.ts +107 -0
  6. package/lib/builders/conversion-options-builder.d.ts.map +1 -0
  7. package/lib/builders/conversion-options-builder.js +215 -0
  8. package/lib/builders/conversion-options-builder.js.map +1 -0
  9. package/{src/builders/index.ts → lib/builders/index.d.ts} +1 -1
  10. package/lib/builders/index.d.ts.map +1 -0
  11. package/lib/builders/index.js +12 -0
  12. package/lib/builders/index.js.map +1 -0
  13. package/lib/builders/metadata-builder.d.ts +202 -0
  14. package/lib/builders/metadata-builder.d.ts.map +1 -0
  15. package/lib/builders/metadata-builder.js +286 -0
  16. package/lib/builders/metadata-builder.js.map +1 -0
  17. package/lib/builders/pdf-builder.d.ts +215 -0
  18. package/lib/builders/pdf-builder.d.ts.map +1 -0
  19. package/lib/builders/pdf-builder.js +339 -0
  20. package/lib/builders/pdf-builder.js.map +1 -0
  21. package/lib/builders/search-options-builder.d.ts +74 -0
  22. package/lib/builders/search-options-builder.d.ts.map +1 -0
  23. package/lib/builders/search-options-builder.js +130 -0
  24. package/lib/builders/search-options-builder.js.map +1 -0
  25. package/lib/document-editor-manager.d.ts +140 -0
  26. package/lib/document-editor-manager.d.ts.map +1 -0
  27. package/lib/document-editor-manager.js +257 -0
  28. package/lib/document-editor-manager.js.map +1 -0
  29. package/lib/errors.d.ts +383 -0
  30. package/lib/errors.d.ts.map +1 -0
  31. package/lib/errors.js +1117 -0
  32. package/lib/errors.js.map +1 -0
  33. package/lib/form-field-manager.d.ts +300 -0
  34. package/lib/form-field-manager.d.ts.map +1 -0
  35. package/lib/form-field-manager.js +567 -0
  36. package/lib/form-field-manager.js.map +1 -0
  37. package/lib/hybrid-ml-manager.d.ts +143 -0
  38. package/lib/hybrid-ml-manager.d.ts.map +1 -0
  39. package/lib/hybrid-ml-manager.js +209 -0
  40. package/lib/hybrid-ml-manager.js.map +1 -0
  41. package/lib/index.d.ts +23 -0
  42. package/lib/index.d.ts.map +1 -0
  43. package/lib/index.js +280 -0
  44. package/lib/index.js.map +1 -0
  45. package/lib/managers/accessibility-manager.d.ts +149 -0
  46. package/lib/managers/accessibility-manager.d.ts.map +1 -0
  47. package/lib/managers/accessibility-manager.js +224 -0
  48. package/lib/managers/accessibility-manager.js.map +1 -0
  49. package/lib/managers/annotation-manager.d.ts +220 -0
  50. package/lib/managers/annotation-manager.d.ts.map +1 -0
  51. package/lib/managers/annotation-manager.js +360 -0
  52. package/lib/managers/annotation-manager.js.map +1 -0
  53. package/lib/managers/barcode-manager.d.ts +80 -0
  54. package/lib/managers/barcode-manager.d.ts.map +1 -0
  55. package/lib/managers/barcode-manager.js +226 -0
  56. package/lib/managers/barcode-manager.js.map +1 -0
  57. package/lib/managers/batch-manager.d.ts +186 -0
  58. package/lib/managers/batch-manager.d.ts.map +1 -0
  59. package/lib/managers/batch-manager.js +389 -0
  60. package/lib/managers/batch-manager.js.map +1 -0
  61. package/lib/managers/cache-manager.d.ts +182 -0
  62. package/lib/managers/cache-manager.d.ts.map +1 -0
  63. package/lib/managers/cache-manager.js +387 -0
  64. package/lib/managers/cache-manager.js.map +1 -0
  65. package/lib/managers/compliance-manager.d.ts +104 -0
  66. package/lib/managers/compliance-manager.d.ts.map +1 -0
  67. package/lib/managers/compliance-manager.js +415 -0
  68. package/lib/managers/compliance-manager.js.map +1 -0
  69. package/lib/managers/content-manager.d.ts +121 -0
  70. package/lib/managers/content-manager.d.ts.map +1 -0
  71. package/lib/managers/content-manager.js +295 -0
  72. package/lib/managers/content-manager.js.map +1 -0
  73. package/lib/managers/document-utility-manager.d.ts +370 -0
  74. package/lib/managers/document-utility-manager.d.ts.map +1 -0
  75. package/lib/managers/document-utility-manager.js +731 -0
  76. package/lib/managers/document-utility-manager.js.map +1 -0
  77. package/lib/managers/dom-pdf-creator.d.ts +105 -0
  78. package/lib/managers/dom-pdf-creator.d.ts.map +1 -0
  79. package/lib/managers/dom-pdf-creator.js +300 -0
  80. package/lib/managers/dom-pdf-creator.js.map +1 -0
  81. package/lib/managers/editing-manager.d.ts +249 -0
  82. package/lib/managers/editing-manager.d.ts.map +1 -0
  83. package/lib/managers/editing-manager.js +388 -0
  84. package/lib/managers/editing-manager.js.map +1 -0
  85. package/lib/managers/enterprise-manager.d.ts +193 -0
  86. package/lib/managers/enterprise-manager.d.ts.map +1 -0
  87. package/lib/managers/enterprise-manager.js +305 -0
  88. package/lib/managers/enterprise-manager.js.map +1 -0
  89. package/lib/managers/extended-managers.d.ts +123 -0
  90. package/lib/managers/extended-managers.d.ts.map +1 -0
  91. package/lib/managers/extended-managers.js +658 -0
  92. package/lib/managers/extended-managers.js.map +1 -0
  93. package/lib/managers/extraction-manager.d.ts +247 -0
  94. package/lib/managers/extraction-manager.d.ts.map +1 -0
  95. package/lib/managers/extraction-manager.js +478 -0
  96. package/lib/managers/extraction-manager.js.map +1 -0
  97. package/lib/managers/final-utilities.d.ts +128 -0
  98. package/lib/managers/final-utilities.d.ts.map +1 -0
  99. package/lib/managers/final-utilities.js +653 -0
  100. package/lib/managers/final-utilities.js.map +1 -0
  101. package/lib/managers/hybrid-ml-advanced.d.ts +137 -0
  102. package/lib/managers/hybrid-ml-advanced.d.ts.map +1 -0
  103. package/lib/managers/hybrid-ml-advanced.js +707 -0
  104. package/lib/managers/hybrid-ml-advanced.js.map +1 -0
  105. package/lib/managers/index.d.ts +65 -0
  106. package/lib/managers/index.d.ts.map +1 -0
  107. package/lib/managers/index.js +70 -0
  108. package/lib/managers/index.js.map +1 -0
  109. package/lib/managers/layer-manager.d.ts +204 -0
  110. package/lib/managers/layer-manager.d.ts.map +1 -0
  111. package/lib/managers/layer-manager.js +403 -0
  112. package/lib/managers/layer-manager.js.map +1 -0
  113. package/lib/managers/metadata-manager.d.ts +149 -0
  114. package/lib/managers/metadata-manager.d.ts.map +1 -0
  115. package/lib/managers/metadata-manager.js +281 -0
  116. package/lib/managers/metadata-manager.js.map +1 -0
  117. package/lib/managers/ocr-manager.d.ts +195 -0
  118. package/lib/managers/ocr-manager.d.ts.map +1 -0
  119. package/lib/managers/ocr-manager.js +583 -0
  120. package/lib/managers/ocr-manager.js.map +1 -0
  121. package/lib/managers/optimization-manager.d.ts +103 -0
  122. package/lib/managers/optimization-manager.d.ts.map +1 -0
  123. package/lib/managers/optimization-manager.js +194 -0
  124. package/lib/managers/optimization-manager.js.map +1 -0
  125. package/lib/managers/outline-manager.d.ts +102 -0
  126. package/lib/managers/outline-manager.d.ts.map +1 -0
  127. package/lib/managers/outline-manager.js +170 -0
  128. package/lib/managers/outline-manager.js.map +1 -0
  129. package/lib/managers/page-manager.d.ts +143 -0
  130. package/lib/managers/page-manager.d.ts.map +1 -0
  131. package/lib/managers/page-manager.js +237 -0
  132. package/lib/managers/page-manager.js.map +1 -0
  133. package/lib/managers/pattern-detection.d.ts +170 -0
  134. package/lib/managers/pattern-detection.d.ts.map +1 -0
  135. package/lib/managers/pattern-detection.js +325 -0
  136. package/lib/managers/pattern-detection.js.map +1 -0
  137. package/lib/managers/rendering-manager.d.ts +354 -0
  138. package/lib/managers/rendering-manager.d.ts.map +1 -0
  139. package/lib/managers/rendering-manager.js +680 -0
  140. package/lib/managers/rendering-manager.js.map +1 -0
  141. package/lib/managers/search-manager.d.ts +236 -0
  142. package/lib/managers/search-manager.d.ts.map +1 -0
  143. package/lib/managers/search-manager.js +330 -0
  144. package/lib/managers/search-manager.js.map +1 -0
  145. package/lib/managers/security-manager.d.ts +162 -0
  146. package/lib/managers/security-manager.d.ts.map +1 -0
  147. package/lib/managers/security-manager.js +293 -0
  148. package/lib/managers/security-manager.js.map +1 -0
  149. package/lib/managers/signature-manager.d.ts +725 -0
  150. package/lib/managers/signature-manager.d.ts.map +1 -0
  151. package/lib/managers/signature-manager.js +1365 -0
  152. package/lib/managers/signature-manager.js.map +1 -0
  153. package/lib/managers/streams.d.ts +263 -0
  154. package/lib/managers/streams.d.ts.map +1 -0
  155. package/lib/managers/streams.js +472 -0
  156. package/lib/managers/streams.js.map +1 -0
  157. package/lib/managers/xfa-manager.d.ts +228 -0
  158. package/lib/managers/xfa-manager.d.ts.map +1 -0
  159. package/lib/managers/xfa-manager.js +490 -0
  160. package/lib/managers/xfa-manager.js.map +1 -0
  161. package/lib/pdf-creator-manager.d.ts +201 -0
  162. package/lib/pdf-creator-manager.d.ts.map +1 -0
  163. package/lib/pdf-creator-manager.js +379 -0
  164. package/lib/pdf-creator-manager.js.map +1 -0
  165. package/lib/properties.d.ts +80 -0
  166. package/lib/properties.d.ts.map +1 -0
  167. package/lib/properties.js +455 -0
  168. package/lib/properties.js.map +1 -0
  169. package/lib/result-accessors-manager.d.ts +347 -0
  170. package/lib/result-accessors-manager.d.ts.map +1 -0
  171. package/lib/result-accessors-manager.js +705 -0
  172. package/lib/result-accessors-manager.js.map +1 -0
  173. package/lib/thumbnail-manager.d.ts +122 -0
  174. package/lib/thumbnail-manager.d.ts.map +1 -0
  175. package/lib/thumbnail-manager.js +206 -0
  176. package/lib/thumbnail-manager.js.map +1 -0
  177. package/lib/types/common.d.ts +93 -0
  178. package/lib/types/common.d.ts.map +1 -0
  179. package/lib/types/common.js +5 -0
  180. package/lib/types/common.js.map +1 -0
  181. package/lib/types/document-types.d.ts +353 -0
  182. package/lib/types/document-types.d.ts.map +1 -0
  183. package/lib/types/document-types.js +83 -0
  184. package/lib/types/document-types.js.map +1 -0
  185. package/{src/types/index.ts → lib/types/index.d.ts} +1 -1
  186. package/lib/types/index.d.ts.map +1 -0
  187. package/lib/types/index.js +6 -0
  188. package/lib/types/index.js.map +1 -0
  189. package/lib/types/manager-types.d.ts +180 -0
  190. package/lib/types/manager-types.d.ts.map +1 -0
  191. package/lib/types/manager-types.js +99 -0
  192. package/lib/types/manager-types.js.map +1 -0
  193. package/lib/types/native-bindings.d.ts +440 -0
  194. package/lib/types/native-bindings.d.ts.map +1 -0
  195. package/lib/types/native-bindings.js +8 -0
  196. package/lib/types/native-bindings.js.map +1 -0
  197. package/{src/workers/index.ts → lib/workers/index.d.ts} +1 -1
  198. package/lib/workers/index.d.ts.map +1 -0
  199. package/lib/workers/index.js +6 -0
  200. package/lib/workers/index.js.map +1 -0
  201. package/lib/workers/pool.d.ts +65 -0
  202. package/lib/workers/pool.d.ts.map +1 -0
  203. package/lib/workers/pool.js +195 -0
  204. package/lib/workers/pool.js.map +1 -0
  205. package/lib/workers/worker.d.ts +6 -0
  206. package/lib/workers/worker.d.ts.map +1 -0
  207. package/lib/workers/worker.js +100 -0
  208. package/lib/workers/worker.js.map +1 -0
  209. package/package.json +12 -22
  210. package/prebuilds/darwin-arm64/pdf_oxide.node +0 -0
  211. package/prebuilds/darwin-x64/pdf_oxide.node +0 -0
  212. package/prebuilds/linux-arm64/pdf_oxide.node +0 -0
  213. package/prebuilds/linux-x64/pdf_oxide.node +0 -0
  214. package/prebuilds/win32-x64/pdf_oxide.node +0 -0
  215. package/binding.gyp +0 -35
  216. package/src/builders/annotation-builder.ts +0 -367
  217. package/src/builders/conversion-options-builder.ts +0 -257
  218. package/src/builders/metadata-builder.ts +0 -317
  219. package/src/builders/pdf-builder.ts +0 -386
  220. package/src/builders/search-options-builder.ts +0 -151
  221. package/src/document-editor-manager.ts +0 -318
  222. package/src/errors.ts +0 -1629
  223. package/src/form-field-manager.ts +0 -666
  224. package/src/hybrid-ml-manager.ts +0 -283
  225. package/src/index.ts +0 -453
  226. package/src/managers/accessibility-manager.ts +0 -338
  227. package/src/managers/annotation-manager.ts +0 -439
  228. package/src/managers/barcode-manager.ts +0 -235
  229. package/src/managers/batch-manager.ts +0 -533
  230. package/src/managers/cache-manager.ts +0 -486
  231. package/src/managers/compliance-manager.ts +0 -375
  232. package/src/managers/content-manager.ts +0 -339
  233. package/src/managers/document-utility-manager.ts +0 -922
  234. package/src/managers/dom-pdf-creator.ts +0 -365
  235. package/src/managers/editing-manager.ts +0 -514
  236. package/src/managers/enterprise-manager.ts +0 -478
  237. package/src/managers/extended-managers.ts +0 -437
  238. package/src/managers/extraction-manager.ts +0 -583
  239. package/src/managers/final-utilities.ts +0 -429
  240. package/src/managers/hybrid-ml-advanced.ts +0 -479
  241. package/src/managers/index.ts +0 -239
  242. package/src/managers/layer-manager.ts +0 -500
  243. package/src/managers/metadata-manager.ts +0 -303
  244. package/src/managers/ocr-manager.ts +0 -756
  245. package/src/managers/optimization-manager.ts +0 -262
  246. package/src/managers/outline-manager.ts +0 -196
  247. package/src/managers/page-manager.ts +0 -289
  248. package/src/managers/pattern-detection.ts +0 -440
  249. package/src/managers/rendering-manager.ts +0 -863
  250. package/src/managers/search-manager.ts +0 -385
  251. package/src/managers/security-manager.ts +0 -345
  252. package/src/managers/signature-manager.ts +0 -1664
  253. package/src/managers/streams.ts +0 -618
  254. package/src/managers/xfa-manager.ts +0 -500
  255. package/src/pdf-creator-manager.ts +0 -494
  256. package/src/properties.ts +0 -522
  257. package/src/result-accessors-manager.ts +0 -867
  258. package/src/tests/advanced-features.test.ts +0 -414
  259. package/src/tests/advanced.test.ts +0 -266
  260. package/src/tests/extended-managers.test.ts +0 -316
  261. package/src/tests/final-utilities.test.ts +0 -455
  262. package/src/tests/foundation.test.ts +0 -315
  263. package/src/tests/high-demand.test.ts +0 -257
  264. package/src/tests/specialized.test.ts +0 -97
  265. package/src/thumbnail-manager.ts +0 -272
  266. package/src/types/common.ts +0 -142
  267. package/src/types/document-types.ts +0 -457
  268. package/src/types/manager-types.ts +0 -284
  269. package/src/types/native-bindings.ts +0 -517
  270. package/src/workers/pool.ts +0 -274
  271. package/src/workers/worker.ts +0 -131
@@ -1,283 +0,0 @@
1
- /**
2
- * HybridMLManager for advanced PDF analysis using machine learning
3
- *
4
- * Analyzes PDF pages for complexity, content type, and optimal extraction strategies.
5
- * API is consistent with Python, Java, C#, Go, and Swift implementations.
6
- */
7
-
8
- import { EventEmitter } from 'events';
9
-
10
- /**
11
- * Page complexity levels
12
- */
13
- export enum PageComplexity {
14
- Simple = 'simple',
15
- Moderate = 'moderate',
16
- Complex = 'complex',
17
- VeryComplex = 'very_complex',
18
- }
19
-
20
- /**
21
- * Content type classifications
22
- */
23
- export enum ContentType {
24
- TextOnly = 'text_only',
25
- TextImages = 'text_images',
26
- Tables = 'tables',
27
- MixedLayout = 'mixed_layout',
28
- Scanned = 'scanned',
29
- Form = 'form',
30
- VectorGraphics = 'vector_graphics',
31
- }
32
-
33
- /**
34
- * Page analysis result
35
- */
36
- export interface PageAnalysisResult {
37
- pageIndex: number;
38
- complexity: PageComplexity;
39
- complexityScore: number;
40
- contentType: ContentType;
41
- textDensity: number;
42
- imageDensity: number;
43
- hasText: boolean;
44
- hasImages: boolean;
45
- hasTables: boolean;
46
- estimatedProcessingTime: number;
47
- }
48
-
49
- /**
50
- * Extraction strategy recommendation
51
- */
52
- export interface ExtractionStrategy {
53
- pageIndex: number;
54
- description: string;
55
- recommendsOcr: boolean;
56
- recommendedMethod: string;
57
- confidence: number;
58
- }
59
-
60
- /**
61
- * Table region information
62
- */
63
- export interface TableRegion {
64
- pageIndex: number;
65
- x: number;
66
- y: number;
67
- width: number;
68
- height: number;
69
- rowCount: number;
70
- columnCount: number;
71
- confidence: number;
72
- }
73
-
74
- /**
75
- * Column region information
76
- */
77
- export interface ColumnRegion {
78
- x: number;
79
- width: number;
80
- confidence: number;
81
- }
82
-
83
- /**
84
- * Hybrid ML Manager for advanced PDF analysis
85
- *
86
- * Provides methods to:
87
- * - Analyze page complexity
88
- * - Detect content types
89
- * - Recommend extraction strategies
90
- * - Detect tables and columns
91
- * - Estimate processing time
92
- */
93
- export class HybridMLManager extends EventEmitter {
94
- private document: any;
95
- private resultCache = new Map<string, any>();
96
- private maxCacheSize = 100;
97
-
98
- constructor(document: any) {
99
- super();
100
- this.document = document;
101
- }
102
-
103
- /**
104
- * Analyzes a specific page
105
- * Matches: Python analyzePage(), Java analyzePage(), C# AnalyzePage()
106
- */
107
- async analyzePage(pageIndex: number): Promise<PageAnalysisResult> {
108
- const cacheKey = `ml:analysis:${pageIndex}`;
109
- if (this.resultCache.has(cacheKey)) {
110
- return this.resultCache.get(cacheKey);
111
- }
112
-
113
- // In real implementation, would call native FFI
114
- const result: PageAnalysisResult = {
115
- pageIndex,
116
- complexity: PageComplexity.Moderate,
117
- complexityScore: 0.5,
118
- contentType: ContentType.TextImages,
119
- textDensity: 0.7,
120
- imageDensity: 0.3,
121
- hasText: true,
122
- hasImages: false,
123
- hasTables: false,
124
- estimatedProcessingTime: 100,
125
- };
126
- this.setCached(cacheKey, result);
127
- return result;
128
- }
129
-
130
- /**
131
- * Analyzes all pages in the document
132
- * Matches: Python analyzeDocument(), Java analyzeDocument(), C# AnalyzeDocument()
133
- */
134
- async analyzeDocument(): Promise<PageAnalysisResult[]> {
135
- const cacheKey = 'ml:analysis:all';
136
- if (this.resultCache.has(cacheKey)) {
137
- return this.resultCache.get(cacheKey);
138
- }
139
-
140
- // In real implementation, would call native FFI
141
- const results: PageAnalysisResult[] = [];
142
- this.setCached(cacheKey, results);
143
- return results;
144
- }
145
-
146
- /**
147
- * Gets extraction strategy recommendation for a page
148
- * Matches: Python getExtractionStrategy(), Java getExtractionStrategy(), C# GetExtractionStrategy()
149
- */
150
- async getExtractionStrategy(pageIndex: number): Promise<ExtractionStrategy> {
151
- const cacheKey = `ml:strategy:${pageIndex}`;
152
- if (this.resultCache.has(cacheKey)) {
153
- return this.resultCache.get(cacheKey);
154
- }
155
-
156
- // In real implementation, would call native FFI
157
- const strategy: ExtractionStrategy = {
158
- pageIndex,
159
- description: 'Standard text extraction recommended',
160
- recommendsOcr: false,
161
- recommendedMethod: 'text_extraction',
162
- confidence: 0.9,
163
- };
164
- this.setCached(cacheKey, strategy);
165
- return strategy;
166
- }
167
-
168
- /**
169
- * Detects tables on a page
170
- * Matches: Python detectTables(), Java detectTables(), C# DetectTables()
171
- */
172
- async detectTables(pageIndex: number): Promise<TableRegion[]> {
173
- const cacheKey = `ml:tables:${pageIndex}`;
174
- if (this.resultCache.has(cacheKey)) {
175
- return this.resultCache.get(cacheKey);
176
- }
177
-
178
- // In real implementation, would call native FFI
179
- const tables: TableRegion[] = [];
180
- this.setCached(cacheKey, tables);
181
- return tables;
182
- }
183
-
184
- /**
185
- * Detects columns on a page
186
- * Matches: Python detectColumns(), Java detectColumns(), C# DetectColumns()
187
- */
188
- async detectColumns(pageIndex: number): Promise<ColumnRegion[]> {
189
- const cacheKey = `ml:columns:${pageIndex}`;
190
- if (this.resultCache.has(cacheKey)) {
191
- return this.resultCache.get(cacheKey);
192
- }
193
-
194
- // In real implementation, would call native FFI
195
- const columns: ColumnRegion[] = [];
196
- this.setCached(cacheKey, columns);
197
- return columns;
198
- }
199
-
200
- /**
201
- * Gets average page complexity in document
202
- * Matches: Python getAverageComplexity(), Java getAverageComplexity(), C# GetAverageComplexity()
203
- */
204
- async getAverageComplexity(): Promise<number> {
205
- const cacheKey = 'ml:avg_complexity';
206
- if (this.resultCache.has(cacheKey)) {
207
- return this.resultCache.get(cacheKey);
208
- }
209
-
210
- // In real implementation, would call native FFI
211
- const complexity = 0.5;
212
- this.setCached(cacheKey, complexity);
213
- return complexity;
214
- }
215
-
216
- /**
217
- * Gets most common content type
218
- * Matches: Python getMostCommonContentType(), Java getMostCommonContentType(), C# GetMostCommonContentType()
219
- */
220
- async getMostCommonContentType(): Promise<ContentType> {
221
- const cacheKey = 'ml:common_content_type';
222
- if (this.resultCache.has(cacheKey)) {
223
- return this.resultCache.get(cacheKey);
224
- }
225
-
226
- // In real implementation, would call native FFI
227
- const contentType = ContentType.TextImages;
228
- this.setCached(cacheKey, contentType);
229
- return contentType;
230
- }
231
-
232
- /**
233
- * Estimates total document processing time
234
- * Matches: Python estimateProcessingTime(), Java estimateProcessingTime(), C# EstimateProcessingTime()
235
- */
236
- async estimateProcessingTime(): Promise<number> {
237
- const cacheKey = 'ml:estimated_time';
238
- if (this.resultCache.has(cacheKey)) {
239
- return this.resultCache.get(cacheKey);
240
- }
241
-
242
- // In real implementation, would call native FFI
243
- const time = 1000;
244
- this.setCached(cacheKey, time);
245
- return time;
246
- }
247
-
248
- /**
249
- * Clears the result cache
250
- * Matches: Python clearCache(), Java clearCache(), C# ClearCache()
251
- */
252
- clearCache(): void {
253
- this.resultCache.clear();
254
- this.emit('cacheCleared');
255
- }
256
-
257
- /**
258
- * Gets cache statistics
259
- * Matches: Python getCacheStats(), Java getCacheStats(), C# GetCacheStats()
260
- */
261
- getCacheStats(): Record<string, any> {
262
- return {
263
- cacheSize: this.resultCache.size,
264
- maxCacheSize: this.maxCacheSize,
265
- entries: Array.from(this.resultCache.keys()),
266
- };
267
- }
268
-
269
- // Private helper methods
270
- private setCached(key: string, value: any): void {
271
- this.resultCache.set(key, value);
272
-
273
- // Simple LRU eviction
274
- if (this.resultCache.size > this.maxCacheSize) {
275
- const firstKey = this.resultCache.keys().next().value;
276
- if (firstKey !== undefined) {
277
- this.resultCache.delete(firstKey);
278
- }
279
- }
280
- }
281
- }
282
-
283
- export default HybridMLManager;