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
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Cache Manager - TypeScript/Node.js Implementation
3
+ *
4
+ * Provides caching functionality for PDF operations:
5
+ * - Document-level caching
6
+ * - Page-level caching
7
+ * - Result caching with TTL
8
+ * - LRU eviction
9
+ * - Cache statistics
10
+ *
11
+ * This completes the cache coverage for 100% FFI parity.
12
+ */
13
+ import { EventEmitter } from 'events';
14
+ /**
15
+ * Cache entry with metadata
16
+ */
17
+ export interface CacheEntry<T = unknown> {
18
+ readonly key: string;
19
+ readonly value: T;
20
+ readonly timestamp: number;
21
+ readonly ttl?: number;
22
+ readonly size?: number;
23
+ readonly hits: number;
24
+ }
25
+ /**
26
+ * Cache options
27
+ */
28
+ export interface CacheOptions {
29
+ readonly maxSize?: number;
30
+ readonly maxEntries?: number;
31
+ readonly defaultTtl?: number;
32
+ readonly enableStatistics?: boolean;
33
+ readonly evictionPolicy?: 'lru' | 'lfu' | 'fifo';
34
+ }
35
+ /**
36
+ * Cache statistics
37
+ */
38
+ export interface CacheStatistics {
39
+ readonly totalEntries: number;
40
+ readonly totalSize: number;
41
+ readonly hitCount: number;
42
+ readonly missCount: number;
43
+ readonly hitRate: number;
44
+ readonly evictionCount: number;
45
+ readonly oldestEntry?: number;
46
+ readonly newestEntry?: number;
47
+ }
48
+ /**
49
+ * Cache scope enumeration
50
+ */
51
+ export declare enum CacheScope {
52
+ /** Cache per document */
53
+ DOCUMENT = "document",
54
+ /** Cache per page */
55
+ PAGE = "page",
56
+ /** Global cache */
57
+ GLOBAL = "global",
58
+ /** Session-level cache */
59
+ SESSION = "session"
60
+ }
61
+ /**
62
+ * Cache event data
63
+ */
64
+ export interface CacheEventData {
65
+ readonly key: string;
66
+ readonly scope?: CacheScope;
67
+ readonly operation: 'set' | 'get' | 'delete' | 'evict' | 'clear';
68
+ readonly hit?: boolean;
69
+ }
70
+ /**
71
+ * Cache Manager - Complete caching capabilities
72
+ *
73
+ * Provides 10 functions for cache management:
74
+ * 1. set - Store a value
75
+ * 2. get - Retrieve a value
76
+ * 3. has - Check if key exists
77
+ * 4. delete - Remove a key
78
+ * 5. clear - Clear all entries
79
+ * 6. clearScope - Clear entries by scope
80
+ * 7. getStatistics - Get cache statistics
81
+ * 8. setTtl - Set TTL for an entry
82
+ * 9. getKeys - Get all keys
83
+ * 10. prune - Remove expired entries
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * const cache = new CacheManager({
88
+ * maxEntries: 1000,
89
+ * defaultTtl: 60000, // 1 minute
90
+ * evictionPolicy: 'lru',
91
+ * });
92
+ *
93
+ * // Store a value
94
+ * cache.set('page:0:text', extractedText, CacheScope.PAGE);
95
+ *
96
+ * // Retrieve a value
97
+ * const text = cache.get<string>('page:0:text');
98
+ *
99
+ * // Check statistics
100
+ * const stats = cache.getStatistics();
101
+ * console.log(`Hit rate: ${stats.hitRate * 100}%`);
102
+ * ```
103
+ */
104
+ export declare class CacheManager extends EventEmitter {
105
+ private readonly cache;
106
+ private readonly scopeIndex;
107
+ private readonly options;
108
+ private hitCount;
109
+ private missCount;
110
+ private evictionCount;
111
+ constructor(options?: CacheOptions);
112
+ /**
113
+ * Store a value in the cache
114
+ */
115
+ set<T>(key: string, value: T, scope?: CacheScope, ttl?: number): void;
116
+ /**
117
+ * Retrieve a value from the cache
118
+ */
119
+ get<T>(key: string): T | undefined;
120
+ /**
121
+ * Check if a key exists in the cache
122
+ */
123
+ has(key: string): boolean;
124
+ /**
125
+ * Remove a key from the cache
126
+ */
127
+ delete(key: string): boolean;
128
+ /**
129
+ * Clear all entries from the cache
130
+ */
131
+ clear(): void;
132
+ /**
133
+ * Clear entries by scope
134
+ */
135
+ clearScope(scope: CacheScope): number;
136
+ /**
137
+ * Get cache statistics
138
+ */
139
+ getStatistics(): CacheStatistics;
140
+ /**
141
+ * Set TTL for an existing entry
142
+ */
143
+ setTtl(key: string, ttl: number): boolean;
144
+ /**
145
+ * Get all cache keys
146
+ */
147
+ getKeys(scope?: CacheScope): string[];
148
+ /**
149
+ * Remove expired entries
150
+ */
151
+ prune(): number;
152
+ /**
153
+ * Ensure cache has capacity, evicting if needed
154
+ */
155
+ private ensureCapacity;
156
+ /**
157
+ * Evict one entry based on eviction policy
158
+ */
159
+ private evictOne;
160
+ /**
161
+ * Find key with oldest timestamp (LRU)
162
+ */
163
+ private findOldestKey;
164
+ /**
165
+ * Find key with least hits (LFU)
166
+ */
167
+ private findLeastUsedKey;
168
+ /**
169
+ * Remove key from scope index
170
+ */
171
+ private removeFromScopeIndex;
172
+ /**
173
+ * Estimate size of a value in bytes
174
+ */
175
+ private estimateSize;
176
+ /**
177
+ * Cleanup resources
178
+ */
179
+ destroy(): void;
180
+ }
181
+ export default CacheManager;
182
+ //# sourceMappingURL=cache-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/managers/cache-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,387 @@
1
+ /**
2
+ * Cache Manager - TypeScript/Node.js Implementation
3
+ *
4
+ * Provides caching functionality for PDF operations:
5
+ * - Document-level caching
6
+ * - Page-level caching
7
+ * - Result caching with TTL
8
+ * - LRU eviction
9
+ * - Cache statistics
10
+ *
11
+ * This completes the cache coverage for 100% FFI parity.
12
+ */
13
+ import { EventEmitter } from 'events';
14
+ /**
15
+ * Cache scope enumeration
16
+ */
17
+ export var CacheScope;
18
+ (function (CacheScope) {
19
+ /** Cache per document */
20
+ CacheScope["DOCUMENT"] = "document";
21
+ /** Cache per page */
22
+ CacheScope["PAGE"] = "page";
23
+ /** Global cache */
24
+ CacheScope["GLOBAL"] = "global";
25
+ /** Session-level cache */
26
+ CacheScope["SESSION"] = "session";
27
+ })(CacheScope || (CacheScope = {}));
28
+ // ============================================================================
29
+ // Cache Manager Implementation
30
+ // ============================================================================
31
+ /**
32
+ * Cache Manager - Complete caching capabilities
33
+ *
34
+ * Provides 10 functions for cache management:
35
+ * 1. set - Store a value
36
+ * 2. get - Retrieve a value
37
+ * 3. has - Check if key exists
38
+ * 4. delete - Remove a key
39
+ * 5. clear - Clear all entries
40
+ * 6. clearScope - Clear entries by scope
41
+ * 7. getStatistics - Get cache statistics
42
+ * 8. setTtl - Set TTL for an entry
43
+ * 9. getKeys - Get all keys
44
+ * 10. prune - Remove expired entries
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const cache = new CacheManager({
49
+ * maxEntries: 1000,
50
+ * defaultTtl: 60000, // 1 minute
51
+ * evictionPolicy: 'lru',
52
+ * });
53
+ *
54
+ * // Store a value
55
+ * cache.set('page:0:text', extractedText, CacheScope.PAGE);
56
+ *
57
+ * // Retrieve a value
58
+ * const text = cache.get<string>('page:0:text');
59
+ *
60
+ * // Check statistics
61
+ * const stats = cache.getStatistics();
62
+ * console.log(`Hit rate: ${stats.hitRate * 100}%`);
63
+ * ```
64
+ */
65
+ export class CacheManager extends EventEmitter {
66
+ constructor(options = {}) {
67
+ super();
68
+ this.cache = new Map();
69
+ this.scopeIndex = new Map();
70
+ // Statistics
71
+ this.hitCount = 0;
72
+ this.missCount = 0;
73
+ this.evictionCount = 0;
74
+ this.options = {
75
+ maxSize: options.maxSize ?? 100 * 1024 * 1024, // 100MB default
76
+ maxEntries: options.maxEntries ?? 10000,
77
+ defaultTtl: options.defaultTtl ?? 0, // 0 = no expiry
78
+ enableStatistics: options.enableStatistics ?? true,
79
+ evictionPolicy: options.evictionPolicy ?? 'lru',
80
+ };
81
+ // Initialize scope index
82
+ for (const scope of Object.values(CacheScope)) {
83
+ this.scopeIndex.set(scope, new Set());
84
+ }
85
+ }
86
+ // ==========================================================================
87
+ // Core Cache Operations (6 functions)
88
+ // ==========================================================================
89
+ /**
90
+ * Store a value in the cache
91
+ */
92
+ set(key, value, scope = CacheScope.GLOBAL, ttl) {
93
+ // Check if we need to evict
94
+ this.ensureCapacity();
95
+ const entry = {
96
+ key,
97
+ value,
98
+ timestamp: Date.now(),
99
+ ttl: ttl ?? this.options.defaultTtl,
100
+ size: this.estimateSize(value),
101
+ hits: 0,
102
+ };
103
+ // Remove from old scope if exists
104
+ if (this.cache.has(key)) {
105
+ this.removeFromScopeIndex(key);
106
+ }
107
+ this.cache.set(key, entry);
108
+ this.scopeIndex.get(scope)?.add(key);
109
+ this.emit('cache-set', {
110
+ key,
111
+ scope,
112
+ operation: 'set',
113
+ });
114
+ }
115
+ /**
116
+ * Retrieve a value from the cache
117
+ */
118
+ get(key) {
119
+ const entry = this.cache.get(key);
120
+ if (!entry) {
121
+ if (this.options.enableStatistics) {
122
+ this.missCount++;
123
+ }
124
+ this.emit('cache-miss', { key, operation: 'get', hit: false });
125
+ return undefined;
126
+ }
127
+ // Check TTL
128
+ if (entry.ttl && entry.ttl > 0 && Date.now() - entry.timestamp > entry.ttl) {
129
+ this.delete(key);
130
+ if (this.options.enableStatistics) {
131
+ this.missCount++;
132
+ }
133
+ this.emit('cache-expired', { key, operation: 'get', hit: false });
134
+ return undefined;
135
+ }
136
+ // Update hit count for LFU
137
+ const updatedEntry = {
138
+ ...entry,
139
+ hits: entry.hits + 1,
140
+ timestamp: this.options.evictionPolicy === 'lru' ? Date.now() : entry.timestamp,
141
+ };
142
+ this.cache.set(key, updatedEntry);
143
+ if (this.options.enableStatistics) {
144
+ this.hitCount++;
145
+ }
146
+ this.emit('cache-hit', { key, operation: 'get', hit: true });
147
+ return entry.value;
148
+ }
149
+ /**
150
+ * Check if a key exists in the cache
151
+ */
152
+ has(key) {
153
+ const entry = this.cache.get(key);
154
+ if (!entry)
155
+ return false;
156
+ // Check TTL
157
+ if (entry.ttl && entry.ttl > 0 && Date.now() - entry.timestamp > entry.ttl) {
158
+ this.delete(key);
159
+ return false;
160
+ }
161
+ return true;
162
+ }
163
+ /**
164
+ * Remove a key from the cache
165
+ */
166
+ delete(key) {
167
+ const exists = this.cache.has(key);
168
+ if (exists) {
169
+ this.removeFromScopeIndex(key);
170
+ this.cache.delete(key);
171
+ this.emit('cache-delete', { key, operation: 'delete' });
172
+ }
173
+ return exists;
174
+ }
175
+ /**
176
+ * Clear all entries from the cache
177
+ */
178
+ clear() {
179
+ const count = this.cache.size;
180
+ this.cache.clear();
181
+ for (const scope of this.scopeIndex.values()) {
182
+ scope.clear();
183
+ }
184
+ this.hitCount = 0;
185
+ this.missCount = 0;
186
+ this.evictionCount = 0;
187
+ this.emit('cache-clear', { key: '*', operation: 'clear' });
188
+ }
189
+ /**
190
+ * Clear entries by scope
191
+ */
192
+ clearScope(scope) {
193
+ const keys = this.scopeIndex.get(scope);
194
+ if (!keys)
195
+ return 0;
196
+ const count = keys.size;
197
+ for (const key of keys) {
198
+ this.cache.delete(key);
199
+ }
200
+ keys.clear();
201
+ this.emit('cache-scope-clear', { key: scope, scope, operation: 'clear' });
202
+ return count;
203
+ }
204
+ // ==========================================================================
205
+ // Statistics and Maintenance (4 functions)
206
+ // ==========================================================================
207
+ /**
208
+ * Get cache statistics
209
+ */
210
+ getStatistics() {
211
+ const entries = Array.from(this.cache.values());
212
+ const totalSize = entries.reduce((sum, e) => sum + (e.size ?? 0), 0);
213
+ const timestamps = entries.map((e) => e.timestamp);
214
+ return {
215
+ totalEntries: this.cache.size,
216
+ totalSize,
217
+ hitCount: this.hitCount,
218
+ missCount: this.missCount,
219
+ hitRate: this.hitCount + this.missCount > 0
220
+ ? this.hitCount / (this.hitCount + this.missCount)
221
+ : 0,
222
+ evictionCount: this.evictionCount,
223
+ oldestEntry: timestamps.length > 0 ? Math.min(...timestamps) : undefined,
224
+ newestEntry: timestamps.length > 0 ? Math.max(...timestamps) : undefined,
225
+ };
226
+ }
227
+ /**
228
+ * Set TTL for an existing entry
229
+ */
230
+ setTtl(key, ttl) {
231
+ const entry = this.cache.get(key);
232
+ if (!entry)
233
+ return false;
234
+ const updatedEntry = {
235
+ ...entry,
236
+ ttl,
237
+ };
238
+ this.cache.set(key, updatedEntry);
239
+ return true;
240
+ }
241
+ /**
242
+ * Get all cache keys
243
+ */
244
+ getKeys(scope) {
245
+ if (scope) {
246
+ return Array.from(this.scopeIndex.get(scope) ?? []);
247
+ }
248
+ return Array.from(this.cache.keys());
249
+ }
250
+ /**
251
+ * Remove expired entries
252
+ */
253
+ prune() {
254
+ const now = Date.now();
255
+ let pruned = 0;
256
+ for (const [key, entry] of this.cache.entries()) {
257
+ if (entry.ttl && entry.ttl > 0 && now - entry.timestamp > entry.ttl) {
258
+ this.delete(key);
259
+ pruned++;
260
+ }
261
+ }
262
+ if (pruned > 0) {
263
+ this.emit('cache-prune', { key: '*', operation: 'delete' });
264
+ }
265
+ return pruned;
266
+ }
267
+ // ==========================================================================
268
+ // Helper Methods
269
+ // ==========================================================================
270
+ /**
271
+ * Ensure cache has capacity, evicting if needed
272
+ */
273
+ ensureCapacity() {
274
+ // Check entry count
275
+ while (this.cache.size >= this.options.maxEntries) {
276
+ this.evictOne();
277
+ }
278
+ // Check total size
279
+ let totalSize = 0;
280
+ for (const entry of this.cache.values()) {
281
+ totalSize += entry.size ?? 0;
282
+ }
283
+ while (totalSize > this.options.maxSize && this.cache.size > 0) {
284
+ const evicted = this.evictOne();
285
+ totalSize -= evicted?.size ?? 0;
286
+ }
287
+ }
288
+ /**
289
+ * Evict one entry based on eviction policy
290
+ */
291
+ evictOne() {
292
+ if (this.cache.size === 0)
293
+ return undefined;
294
+ let keyToEvict;
295
+ switch (this.options.evictionPolicy) {
296
+ case 'lru':
297
+ // Find oldest timestamp
298
+ keyToEvict = this.findOldestKey();
299
+ break;
300
+ case 'lfu':
301
+ // Find least frequently used
302
+ keyToEvict = this.findLeastUsedKey();
303
+ break;
304
+ case 'fifo':
305
+ default:
306
+ // First key
307
+ keyToEvict = this.cache.keys().next().value;
308
+ break;
309
+ }
310
+ if (keyToEvict) {
311
+ const entry = this.cache.get(keyToEvict);
312
+ this.removeFromScopeIndex(keyToEvict);
313
+ this.cache.delete(keyToEvict);
314
+ this.evictionCount++;
315
+ this.emit('cache-evict', { key: keyToEvict, operation: 'evict' });
316
+ return entry;
317
+ }
318
+ return undefined;
319
+ }
320
+ /**
321
+ * Find key with oldest timestamp (LRU)
322
+ */
323
+ findOldestKey() {
324
+ let oldestKey;
325
+ let oldestTime = Infinity;
326
+ for (const [key, entry] of this.cache.entries()) {
327
+ if (entry.timestamp < oldestTime) {
328
+ oldestTime = entry.timestamp;
329
+ oldestKey = key;
330
+ }
331
+ }
332
+ return oldestKey;
333
+ }
334
+ /**
335
+ * Find key with least hits (LFU)
336
+ */
337
+ findLeastUsedKey() {
338
+ let leastUsedKey;
339
+ let leastHits = Infinity;
340
+ for (const [key, entry] of this.cache.entries()) {
341
+ if (entry.hits < leastHits) {
342
+ leastHits = entry.hits;
343
+ leastUsedKey = key;
344
+ }
345
+ }
346
+ return leastUsedKey;
347
+ }
348
+ /**
349
+ * Remove key from scope index
350
+ */
351
+ removeFromScopeIndex(key) {
352
+ for (const keys of this.scopeIndex.values()) {
353
+ keys.delete(key);
354
+ }
355
+ }
356
+ /**
357
+ * Estimate size of a value in bytes
358
+ */
359
+ estimateSize(value) {
360
+ if (value === null || value === undefined)
361
+ return 0;
362
+ if (typeof value === 'string')
363
+ return value.length * 2;
364
+ if (typeof value === 'number')
365
+ return 8;
366
+ if (typeof value === 'boolean')
367
+ return 4;
368
+ if (Buffer.isBuffer(value))
369
+ return value.length;
370
+ if (Array.isArray(value)) {
371
+ return value.reduce((sum, v) => sum + this.estimateSize(v), 0);
372
+ }
373
+ if (typeof value === 'object') {
374
+ return JSON.stringify(value).length * 2;
375
+ }
376
+ return 0;
377
+ }
378
+ /**
379
+ * Cleanup resources
380
+ */
381
+ destroy() {
382
+ this.clear();
383
+ this.removeAllListeners();
384
+ }
385
+ }
386
+ export default CacheManager;
387
+ //# sourceMappingURL=cache-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../src/managers/cache-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * ComplianceManager - Canonical Compliance Manager (merged from 2 implementations)
3
+ *
4
+ * Consolidates:
5
+ * - src/compliance-manager.ts ComplianceManager (validation + issue analysis + native FFI)
6
+ * - src/managers/ocr-compliance-cache.ts ComplianceManager (validation + conversion + fixing)
7
+ *
8
+ * Provides complete PDF/A, PDF/X, PDF/UA compliance operations.
9
+ */
10
+ import { EventEmitter } from 'events';
11
+ export declare enum PdfALevel {
12
+ A1a = "PDF/A-1a",
13
+ A1b = "PDF/A-1b",
14
+ A2a = "PDF/A-2a",
15
+ A2b = "PDF/A-2b",
16
+ A3a = "PDF/A-3a",
17
+ A3b = "PDF/A-3b"
18
+ }
19
+ export declare enum PdfXLevel {
20
+ X1a = "PDF/X-1a",
21
+ X1a2001 = "PDF/X-1a:2001",
22
+ X1a2003 = "PDF/X-1a:2003",
23
+ X3 = "PDF/X-3",
24
+ X3_2002 = "PDF/X-3:2002",
25
+ X3_2003 = "PDF/X-3:2003",
26
+ X4 = "PDF/X-4"
27
+ }
28
+ export declare enum PdfUALevel {
29
+ UA1 = "PDF/UA-1",
30
+ UA2 = "PDF/UA-2"
31
+ }
32
+ export declare enum ComplianceIssueType {
33
+ FontNotEmbedded = "font_not_embedded",
34
+ InvalidColorSpace = "invalid_color_space",
35
+ MissingAltText = "missing_alt_text",
36
+ MissingLanguage = "missing_language",
37
+ MissingTitle = "missing_title",
38
+ InvalidAnnotation = "invalid_annotation",
39
+ MissingStructure = "missing_structure",
40
+ InvalidLink = "invalid_link",
41
+ Other = "other"
42
+ }
43
+ export declare enum IssueSeverity {
44
+ Error = "error",
45
+ Warning = "warning",
46
+ Info = "info"
47
+ }
48
+ export interface ComplianceIssue {
49
+ type: ComplianceIssueType;
50
+ severity: IssueSeverity;
51
+ message: string;
52
+ pageIndex?: number;
53
+ }
54
+ export interface ComplianceValidationResult {
55
+ isCompliant: boolean;
56
+ level: string;
57
+ issues: ComplianceIssue[];
58
+ validationTime: number;
59
+ }
60
+ export interface ComplianceResult {
61
+ type: string;
62
+ valid: boolean;
63
+ issues: string[];
64
+ severity: string;
65
+ }
66
+ export declare class ComplianceManager extends EventEmitter {
67
+ private document;
68
+ private resultCache;
69
+ private maxCacheSize;
70
+ private native;
71
+ constructor(document: any);
72
+ validatePdfA(level?: PdfALevel | string): Promise<ComplianceValidationResult>;
73
+ validatePdfX(level?: PdfXLevel | string): Promise<ComplianceValidationResult>;
74
+ validatePdfUA(level?: PdfUALevel | string): Promise<ComplianceValidationResult>;
75
+ getAllIssues(): Promise<ComplianceIssue[]>;
76
+ getIssuesOfType(type: ComplianceIssueType): Promise<ComplianceIssue[]>;
77
+ getIssueCount(): Promise<number>;
78
+ getErrorCount(): Promise<number>;
79
+ getWarningCount(): Promise<number>;
80
+ convertToPdfA(level?: string): Promise<boolean>;
81
+ convertToPdfUA(): Promise<boolean>;
82
+ getComplianceReport(complianceType?: string): Promise<string>;
83
+ checkFontEmbedding(): Promise<boolean>;
84
+ /** @deprecated Use checkFontEmbedding() instead */
85
+ hasFontsEmbedded(): Promise<boolean>;
86
+ checkColorSpace(): Promise<boolean>;
87
+ /** @deprecated Use checkColorSpace() instead */
88
+ hasValidColorSpace(): Promise<boolean>;
89
+ checkTaggedContent(): Promise<boolean>;
90
+ addMissingTags(): Promise<boolean>;
91
+ fixFontIssues(): Promise<number>;
92
+ fixColorIssues(): Promise<number>;
93
+ removeUnsupportedFeatures(): Promise<number>;
94
+ getComplianceIssues(): Promise<string[]>;
95
+ getIssueSeverity(issue: string): string;
96
+ createComplianceReportFile(filePath: string): Promise<boolean>;
97
+ getComplianceSummary(): Promise<object>;
98
+ clearCache(): void;
99
+ getCacheStats(): Record<string, any>;
100
+ destroy(): void;
101
+ private setCached;
102
+ }
103
+ export default ComplianceManager;
104
+ //# sourceMappingURL=compliance-manager.d.ts.map