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,455 +0,0 @@
1
- /**
2
- * Comprehensive test suite for Phase 8 Final Utilities.
3
- * Tests: EventManager, EncryptionManager, CompressionManager, CustomAnnotationManager, ContentSecurityManager
4
- */
5
-
6
- import { describe, it, expect, beforeEach } from '@jest/globals';
7
-
8
- import EventManager from '../managers/event-manager';
9
- import EncryptionManager from '../managers/encryption-manager';
10
- import CompressionManager from '../managers/compression-manager';
11
- import CustomAnnotationManager from '../managers/custom-annotation-manager';
12
- import ContentSecurityManager from '../managers/content-security-manager';
13
-
14
- describe('Phase 8 Final Utilities', () => {
15
- describe('EventManager', () => {
16
- let manager: EventManager;
17
-
18
- beforeEach(() => {
19
- manager = new EventManager();
20
- });
21
-
22
- it('should add event listener and return true', () => {
23
- const handler = (e: any) => {};
24
- const result = manager.addEventListener('PAGE_LOADED', handler);
25
- expect(result).toBe(true);
26
- });
27
-
28
- it('should remove event listener and return true', () => {
29
- const handler = (e: any) => {};
30
- manager.addEventListener('PAGE_LOADED', handler);
31
- const result = manager.removeEventListener('PAGE_LOADED', handler);
32
- expect(result).toBe(true);
33
- });
34
-
35
- it('should check if listener exists', () => {
36
- const handler = (e: any) => {};
37
- manager.addEventListener('CONTENT_PARSED', handler);
38
- const result = manager.hasListener('CONTENT_PARSED');
39
- expect(result).toBe(true);
40
- });
41
-
42
- it('should return false for non-existent listener', () => {
43
- const result = manager.hasListener('ERROR_OCCURRED');
44
- expect(result).toBe(false);
45
- });
46
-
47
- it('should count listeners correctly', () => {
48
- manager.addEventListener('PAGE_RENDERED', (e: any) => {});
49
- manager.addEventListener('PAGE_RENDERED', (e: any) => {});
50
- const count = manager.getListenerCount('PAGE_RENDERED');
51
- expect(count).toBe(2);
52
- });
53
-
54
- it('should clear listeners for event', () => {
55
- manager.addEventListener('SEARCH_COMPLETED', (e: any) => {});
56
- const result = manager.clearListeners('SEARCH_COMPLETED');
57
- expect(result).toBe(true);
58
- expect(manager.getListenerCount('SEARCH_COMPLETED')).toBe(0);
59
- });
60
-
61
- it('should get event statistics as object', () => {
62
- manager.addEventListener('PAGE_LOADED', (e: any) => {});
63
- manager.addEventListener('CONTENT_PARSED', (e: any) => {});
64
- const stats = manager.getEventStatistics();
65
- expect(typeof stats).toBe('object');
66
- });
67
-
68
- it('should enable event logging and return boolean', () => {
69
- const result = manager.enableEventLogging(true);
70
- expect(typeof result).toBe('boolean');
71
- });
72
-
73
- it('should emit event and call handlers', () => {
74
- let called = false;
75
- const handler = (e: any) => {
76
- called = true;
77
- };
78
- manager.addEventListener('PAGE_LOADED', handler);
79
- // Event emission would be tested in integration
80
- });
81
- });
82
-
83
- describe('EncryptionManager', () => {
84
- let manager: EncryptionManager;
85
-
86
- beforeEach(() => {
87
- manager = new EncryptionManager();
88
- });
89
-
90
- it('should encrypt document with settings and return boolean', () => {
91
- const settings = {
92
- algorithm: 'AES_256',
93
- user_password: 'user123',
94
- owner_password: 'owner123',
95
- allow_printing: true,
96
- allow_copying: false,
97
- allow_modification: false,
98
- };
99
- const result = manager.encryptDocument(settings);
100
- expect(typeof result).toBe('boolean');
101
- });
102
-
103
- it('should decrypt document and return boolean', () => {
104
- const result = manager.decryptDocument('password123');
105
- expect(typeof result).toBe('boolean');
106
- });
107
-
108
- it('should change encryption settings and return boolean', () => {
109
- const settings = { algorithm: 'AES_256' };
110
- const result = manager.changeEncryption(settings);
111
- expect(typeof result).toBe('boolean');
112
- });
113
-
114
- it('should check encryption status and return boolean', () => {
115
- const result = manager.isDocumentEncrypted();
116
- expect(typeof result).toBe('boolean');
117
- });
118
-
119
- it('should set user password and return boolean', () => {
120
- const result = manager.setUserPassword('newpass123');
121
- expect(typeof result).toBe('boolean');
122
- });
123
-
124
- it('should set owner password and return boolean', () => {
125
- const result = manager.setOwnerPassword('ownerpass123');
126
- expect(typeof result).toBe('boolean');
127
- });
128
-
129
- it('should validate password and return boolean', () => {
130
- const result = manager.validatePassword('testpass');
131
- expect(typeof result).toBe('boolean');
132
- });
133
-
134
- it('should get permissions as object', () => {
135
- const perms = manager.getPermissions();
136
- expect(typeof perms).toBe('object');
137
- });
138
-
139
- it('should set permissions and return boolean', () => {
140
- const perms = { allow_print: true, allow_copy: false };
141
- const result = manager.setPermissions(perms);
142
- expect(typeof result).toBe('boolean');
143
- });
144
-
145
- it('should remove encryption and return boolean', () => {
146
- const result = manager.removeEncryption('ownerpass');
147
- expect(typeof result).toBe('boolean');
148
- });
149
-
150
- it('should support all encryption algorithms', () => {
151
- const algorithms = ['AES_128', 'AES_256', 'RC4_40', 'RC4_128'];
152
-
153
- for (const algo of algorithms) {
154
- const settings = {
155
- algorithm: algo,
156
- user_password: 'user',
157
- owner_password: 'owner',
158
- };
159
- const result = manager.encryptDocument(settings);
160
- expect(typeof result).toBe('boolean');
161
- }
162
- });
163
- });
164
-
165
- describe('CompressionManager', () => {
166
- let manager: CompressionManager;
167
-
168
- beforeEach(() => {
169
- manager = new CompressionManager();
170
- });
171
-
172
- it('should compress document with settings and return boolean', () => {
173
- const settings = {
174
- level: 'BALANCED',
175
- compress_images: true,
176
- compress_streams: true,
177
- compress_fonts: true,
178
- remove_duplicates: true,
179
- };
180
- const result = manager.compressDocument(settings);
181
- expect(typeof result).toBe('boolean');
182
- });
183
-
184
- it('should compress images with quality and return boolean', () => {
185
- const result = manager.compressImages(85);
186
- expect(typeof result).toBe('boolean');
187
- });
188
-
189
- it('should compress streams and return boolean', () => {
190
- const result = manager.compressStreams();
191
- expect(typeof result).toBe('boolean');
192
- });
193
-
194
- it('should compress specific page and return boolean', () => {
195
- const settings = { level: 'BALANCED' };
196
- const result = manager.compressPage(0, settings);
197
- expect(typeof result).toBe('boolean');
198
- });
199
-
200
- it('should check compression status and return boolean', () => {
201
- const result = manager.isCompressed();
202
- expect(typeof result).toBe('boolean');
203
- });
204
-
205
- it('should decompress document and return boolean', () => {
206
- const result = manager.decompressDocument();
207
- expect(typeof result).toBe('boolean');
208
- });
209
-
210
- it('should get compression ratio as number or null', () => {
211
- const ratio = manager.getCompressionRatio();
212
- expect(ratio === null || typeof ratio === 'number').toBe(true);
213
- });
214
-
215
- it('should get compression report as object', () => {
216
- const report = manager.getCompressionReport();
217
- expect(typeof report).toBe('object');
218
- });
219
-
220
- it('should optimize for web and return boolean', () => {
221
- const result = manager.optimizeForWeb();
222
- expect(typeof result).toBe('boolean');
223
- });
224
-
225
- it('should optimize for print and return boolean', () => {
226
- const result = manager.optimizeForPrint();
227
- expect(typeof result).toBe('boolean');
228
- });
229
-
230
- it('should support all compression levels', () => {
231
- const levels = ['NONE', 'FAST', 'BALANCED', 'BEST'];
232
-
233
- for (const level of levels) {
234
- const settings = {
235
- level,
236
- compress_images: true,
237
- compress_streams: true,
238
- compress_fonts: true,
239
- remove_duplicates: true,
240
- };
241
- manager.compressDocument(settings);
242
- }
243
- });
244
- });
245
-
246
- describe('CustomAnnotationManager', () => {
247
- let manager: CustomAnnotationManager;
248
-
249
- beforeEach(() => {
250
- manager = new CustomAnnotationManager();
251
- });
252
-
253
- it('should create custom annotation and return ID or null', () => {
254
- const props = { color: 'red', opacity: 0.5 };
255
- const result = manager.createCustomAnnotation('highlight', props);
256
- expect(result === null || typeof result === 'string').toBe(true);
257
- });
258
-
259
- it('should modify annotation and return boolean', () => {
260
- const props = { color: 'blue' };
261
- const result = manager.modifyAnnotation('anno_1', props);
262
- expect(typeof result).toBe('boolean');
263
- });
264
-
265
- it('should delete annotation and return boolean', () => {
266
- const result = manager.deleteCustomAnnotation('anno_1');
267
- expect(typeof result).toBe('boolean');
268
- });
269
-
270
- it('should register annotation type and return boolean', () => {
271
- const handler = (e: any) => {};
272
- const result = manager.registerAnnotationType('custom_type', handler);
273
- expect(typeof result).toBe('boolean');
274
- });
275
-
276
- it('should set annotation visibility and return boolean', () => {
277
- const result = manager.setAnnotationVisibility('anno_1', true);
278
- expect(typeof result).toBe('boolean');
279
- });
280
-
281
- it('should export annotations and return boolean', () => {
282
- const result = manager.exportAnnotations('/output.json');
283
- expect(typeof result).toBe('boolean');
284
- });
285
-
286
- it('should import annotations and return boolean', () => {
287
- const result = manager.importAnnotations('/input.json');
288
- expect(typeof result).toBe('boolean');
289
- });
290
-
291
- it('should apply annotation style and return boolean', () => {
292
- const style = { font_size: 12, color: 'red' };
293
- const result = manager.applyAnnotationStyle('anno_1', style);
294
- expect(typeof result).toBe('boolean');
295
- });
296
-
297
- it('should reply to annotation and return boolean', () => {
298
- const result = manager.replyToAnnotation('anno_1', 'This is a reply');
299
- expect(typeof result).toBe('boolean');
300
- });
301
-
302
- it('should get annotation replies as array', () => {
303
- const replies = manager.getAnnotationReplies('anno_1');
304
- expect(Array.isArray(replies)).toBe(true);
305
- });
306
-
307
- it('should flatten annotations and return boolean', () => {
308
- const result = manager.flattenAnnotations();
309
- expect(typeof result).toBe('boolean');
310
- });
311
-
312
- it('should convert annotations and return boolean', () => {
313
- const result = manager.convertAnnotations('xfdf');
314
- expect(typeof result).toBe('boolean');
315
- });
316
-
317
- it('should complete annotation lifecycle', () => {
318
- // Create
319
- const annoId = manager.createCustomAnnotation('note', { text: 'Important' });
320
- // Modify
321
- if (annoId) {
322
- manager.modifyAnnotation(annoId, { color: 'yellow' });
323
- // Reply
324
- manager.replyToAnnotation(annoId, 'Updated');
325
- // Get replies
326
- const replies = manager.getAnnotationReplies(annoId);
327
- expect(Array.isArray(replies)).toBe(true);
328
- }
329
- });
330
- });
331
-
332
- describe('ContentSecurityManager', () => {
333
- let manager: ContentSecurityManager;
334
-
335
- beforeEach(() => {
336
- manager = new ContentSecurityManager();
337
- });
338
-
339
- it('should set access control and return boolean', () => {
340
- const restrictions = { role: 'admin', action: 'read' };
341
- const result = manager.setAccessControl('admin_policy', restrictions);
342
- expect(typeof result).toBe('boolean');
343
- });
344
-
345
- it('should validate access and return boolean', () => {
346
- const result = manager.validateAccess('admin', 'read');
347
- expect(typeof result).toBe('boolean');
348
- });
349
-
350
- it('should apply digital rights and return boolean', () => {
351
- const rights = { can_print: true, can_copy: false, can_modify: false };
352
- const result = manager.applyDigitalRights(rights);
353
- expect(typeof result).toBe('boolean');
354
- });
355
-
356
- it('should sanitize content and return boolean', () => {
357
- const result = manager.sanitizeContent(true, true);
358
- expect(typeof result).toBe('boolean');
359
- });
360
-
361
- it('should detect suspicious content and return array', () => {
362
- const results = manager.detectSuspiciousContent();
363
- expect(Array.isArray(results)).toBe(true);
364
- });
365
-
366
- it('should get access log as array', () => {
367
- const log = manager.getAccessLog();
368
- expect(Array.isArray(log)).toBe(true);
369
- });
370
-
371
- it('should set expiration date and return boolean', () => {
372
- const result = manager.setExpirationDate('2025-12-31');
373
- expect(typeof result).toBe('boolean');
374
- });
375
-
376
- it('should enable watermarking and return boolean', () => {
377
- const result = manager.enableWatermarking('CONFIDENTIAL');
378
- expect(typeof result).toBe('boolean');
379
- });
380
-
381
- it('should track document usage and return boolean', () => {
382
- const result = manager.trackDocumentUsage(true);
383
- expect(typeof result).toBe('boolean');
384
- });
385
-
386
- it('should get security audit as object', () => {
387
- const audit = manager.getSecurityAudit();
388
- expect(typeof audit).toBe('object');
389
- });
390
-
391
- it('should complete security policy enforcement', () => {
392
- // Set access control
393
- manager.setAccessControl('strict', { role: 'viewer', action: 'read_only' });
394
- // Apply rights
395
- manager.applyDigitalRights({ can_print: false, can_copy: false });
396
- // Enable watermarking
397
- manager.enableWatermarking('RESTRICTED');
398
- // Sanitize
399
- manager.sanitizeContent(true, true);
400
- // Get audit
401
- const audit = manager.getSecurityAudit();
402
- expect(typeof audit).toBe('object');
403
- });
404
- });
405
-
406
- describe('Phase 8 Integration Tests', () => {
407
- it('should complete document protection workflow', () => {
408
- const eventMgr = new EventManager();
409
- const encryptionMgr = new EncryptionManager();
410
- const securityMgr = new ContentSecurityManager();
411
-
412
- // Register event listeners
413
- eventMgr.addEventListener('PROCESSING_STARTED', (e: any) => {
414
- console.log('Started');
415
- });
416
-
417
- // Set up encryption
418
- const settings = {
419
- algorithm: 'AES_256',
420
- user_password: 'user',
421
- owner_password: 'owner',
422
- allow_printing: true,
423
- allow_copying: false,
424
- allow_modification: false,
425
- };
426
- encryptionMgr.encryptDocument(settings);
427
-
428
- // Apply security
429
- securityMgr.setAccessControl('restricted', { action: 'read_only' });
430
- securityMgr.enableWatermarking('CONFIDENTIAL');
431
- });
432
-
433
- it('should complete document optimization workflow', () => {
434
- const compressionMgr = new CompressionManager();
435
- const annotationMgr = new CustomAnnotationManager();
436
- const securityMgr = new ContentSecurityManager();
437
-
438
- // Compress
439
- const settings = {
440
- level: 'BALANCED',
441
- compress_images: true,
442
- compress_streams: true,
443
- compress_fonts: true,
444
- remove_duplicates: true,
445
- };
446
- compressionMgr.compressDocument(settings);
447
-
448
- // Manage annotations
449
- const annoId = annotationMgr.createCustomAnnotation('note', { text: 'Optimized' });
450
-
451
- // Secure
452
- securityMgr.sanitizeContent(true, true);
453
- });
454
- });
455
- });