pdf-oxide 0.3.24

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 (62) hide show
  1. package/README.md +218 -0
  2. package/binding.gyp +35 -0
  3. package/package.json +78 -0
  4. package/src/builders/annotation-builder.ts +367 -0
  5. package/src/builders/conversion-options-builder.ts +257 -0
  6. package/src/builders/index.ts +12 -0
  7. package/src/builders/metadata-builder.ts +317 -0
  8. package/src/builders/pdf-builder.ts +386 -0
  9. package/src/builders/search-options-builder.ts +151 -0
  10. package/src/document-editor-manager.ts +318 -0
  11. package/src/errors.ts +1629 -0
  12. package/src/form-field-manager.ts +666 -0
  13. package/src/hybrid-ml-manager.ts +283 -0
  14. package/src/index.ts +453 -0
  15. package/src/managers/accessibility-manager.ts +338 -0
  16. package/src/managers/annotation-manager.ts +439 -0
  17. package/src/managers/barcode-manager.ts +235 -0
  18. package/src/managers/batch-manager.ts +533 -0
  19. package/src/managers/cache-manager.ts +486 -0
  20. package/src/managers/compliance-manager.ts +375 -0
  21. package/src/managers/content-manager.ts +339 -0
  22. package/src/managers/document-utility-manager.ts +922 -0
  23. package/src/managers/dom-pdf-creator.ts +365 -0
  24. package/src/managers/editing-manager.ts +514 -0
  25. package/src/managers/enterprise-manager.ts +478 -0
  26. package/src/managers/extended-managers.ts +437 -0
  27. package/src/managers/extraction-manager.ts +583 -0
  28. package/src/managers/final-utilities.ts +429 -0
  29. package/src/managers/hybrid-ml-advanced.ts +479 -0
  30. package/src/managers/index.ts +239 -0
  31. package/src/managers/layer-manager.ts +500 -0
  32. package/src/managers/metadata-manager.ts +303 -0
  33. package/src/managers/ocr-manager.ts +756 -0
  34. package/src/managers/optimization-manager.ts +262 -0
  35. package/src/managers/outline-manager.ts +196 -0
  36. package/src/managers/page-manager.ts +289 -0
  37. package/src/managers/pattern-detection.ts +440 -0
  38. package/src/managers/rendering-manager.ts +863 -0
  39. package/src/managers/search-manager.ts +385 -0
  40. package/src/managers/security-manager.ts +345 -0
  41. package/src/managers/signature-manager.ts +1664 -0
  42. package/src/managers/streams.ts +618 -0
  43. package/src/managers/xfa-manager.ts +500 -0
  44. package/src/pdf-creator-manager.ts +494 -0
  45. package/src/properties.ts +522 -0
  46. package/src/result-accessors-manager.ts +867 -0
  47. package/src/tests/advanced-features.test.ts +414 -0
  48. package/src/tests/advanced.test.ts +266 -0
  49. package/src/tests/extended-managers.test.ts +316 -0
  50. package/src/tests/final-utilities.test.ts +455 -0
  51. package/src/tests/foundation.test.ts +315 -0
  52. package/src/tests/high-demand.test.ts +257 -0
  53. package/src/tests/specialized.test.ts +97 -0
  54. package/src/thumbnail-manager.ts +272 -0
  55. package/src/types/common.ts +142 -0
  56. package/src/types/document-types.ts +457 -0
  57. package/src/types/index.ts +6 -0
  58. package/src/types/manager-types.ts +284 -0
  59. package/src/types/native-bindings.ts +517 -0
  60. package/src/workers/index.ts +7 -0
  61. package/src/workers/pool.ts +274 -0
  62. package/src/workers/worker.ts +131 -0
@@ -0,0 +1,284 @@
1
+ /**
2
+ * TypeScript type definitions for all PDF Oxide managers
3
+ *
4
+ * Provides comprehensive type safety for Node.js and TypeScript consumers
5
+ * with full FFI integration and proper error handling.
6
+ */
7
+
8
+ import { EventEmitter } from 'events';
9
+
10
+ // ============================================================
11
+ // Document Types
12
+ // ============================================================
13
+
14
+ export interface PdfDocumentHandle {
15
+ readonly handle: unknown;
16
+ readonly pageCount: () => Promise<number>;
17
+ readonly extractText: (pageIndex: number) => Promise<string>;
18
+ readonly extractFormFields: () => Promise<FormField[]>;
19
+ readonly getMetadata: () => Promise<Record<string, string>>;
20
+ }
21
+
22
+ // ============================================================
23
+ // OCR Types
24
+ // ============================================================
25
+
26
+ export enum OcrLanguage {
27
+ ENGLISH = 'en',
28
+ CHINESE = 'zh',
29
+ JAPANESE = 'ja',
30
+ SPANISH = 'es',
31
+ FRENCH = 'fr',
32
+ PORTUGUESE = 'pt',
33
+ RUSSIAN = 'ru',
34
+ ARABIC = 'ar',
35
+ KOREAN = 'ko',
36
+ VIETNAMESE = 'vi',
37
+ }
38
+
39
+ export interface TextRegion {
40
+ x: number;
41
+ y: number;
42
+ width: number;
43
+ height: number;
44
+ }
45
+
46
+ export interface OcrResult {
47
+ readonly pageIndex: number;
48
+ readonly text: string;
49
+ readonly confidence: number;
50
+ readonly regionCount: number;
51
+ }
52
+
53
+ export interface OcrBatchResult {
54
+ readonly startPage: number;
55
+ readonly endPage: number;
56
+ readonly totalPages: number;
57
+ readonly totalSpans: number;
58
+ readonly averageConfidence: number;
59
+ readonly skippedPages: number;
60
+ }
61
+
62
+ // ============================================================
63
+ // Compliance Types
64
+ // ============================================================
65
+
66
+ export enum ComplianceType {
67
+ PDF_A_1B = 'pdf_a_1b',
68
+ PDF_A_2B = 'pdf_a_2b',
69
+ PDF_A_3B = 'pdf_a_3b',
70
+ PDF_X_1A = 'pdf_x_1a',
71
+ PDF_X_3 = 'pdf_x_3',
72
+ PDF_UA = 'pdf_ua',
73
+ }
74
+
75
+ export interface ComplianceResult {
76
+ readonly type: string;
77
+ readonly valid: boolean;
78
+ readonly issues: readonly string[];
79
+ readonly severity: 'none' | 'low' | 'medium' | 'high' | 'critical';
80
+ }
81
+
82
+ export interface ComplianceReport {
83
+ readonly timestamp: number;
84
+ readonly results: ComplianceResult[];
85
+ readonly isFullyCompliant: boolean;
86
+ }
87
+
88
+ // ============================================================
89
+ // Cache Types
90
+ // ============================================================
91
+
92
+ export interface CacheEntry<T> {
93
+ readonly key: string;
94
+ readonly value: T;
95
+ readonly timestamp: number;
96
+ readonly ttl?: number;
97
+ }
98
+
99
+ export interface CacheStats {
100
+ readonly cacheCount: number;
101
+ readonly totalEntries: number;
102
+ readonly totalSize: number;
103
+ readonly entriesByCache: Map<string, number>;
104
+ readonly hitRate: number;
105
+ readonly missRate: number;
106
+ }
107
+
108
+ // ============================================================
109
+ // Form Field Types
110
+ // ============================================================
111
+
112
+ export enum FormFieldType {
113
+ TEXT = 'text',
114
+ CHECKBOX = 'checkbox',
115
+ RADIO = 'radio',
116
+ COMBOBOX = 'combobox',
117
+ LISTBOX = 'listbox',
118
+ SIGNATURE = 'signature',
119
+ DATE = 'date',
120
+ }
121
+
122
+ export interface FormField {
123
+ readonly name: string;
124
+ readonly type: FormFieldType;
125
+ readonly value: string;
126
+ readonly pageIndex: number;
127
+ readonly x: number;
128
+ readonly y: number;
129
+ readonly width: number;
130
+ readonly height: number;
131
+ readonly required?: boolean;
132
+ readonly readonly?: boolean;
133
+ }
134
+
135
+ // ============================================================
136
+ // Manager Configuration Types
137
+ // ============================================================
138
+
139
+ export interface ManagerOptions {
140
+ readonly enableCache?: boolean;
141
+ readonly cacheSize?: number;
142
+ readonly enableEvents?: boolean;
143
+ readonly enableLogging?: boolean;
144
+ }
145
+
146
+ export interface ManagerState {
147
+ readonly initialized: boolean;
148
+ readonly hasDocument: boolean;
149
+ readonly operationCount: number;
150
+ readonly errorCount: number;
151
+ }
152
+
153
+ // ============================================================
154
+ // Event Types
155
+ // ============================================================
156
+
157
+ export interface ManagerEvent<T = Record<string, unknown>> {
158
+ readonly eventType: string;
159
+ readonly timestamp: number;
160
+ readonly data: T;
161
+ readonly manager: string;
162
+ }
163
+
164
+ export interface ErrorEvent extends ManagerEvent<{ error: Error; operation: string }> {}
165
+
166
+ // ============================================================
167
+ // Batch Processing Types
168
+ // ============================================================
169
+
170
+ export interface BatchOptions {
171
+ readonly pageSize?: number;
172
+ readonly parallelism?: number;
173
+ readonly timeout?: number;
174
+ readonly retryOnError?: boolean;
175
+ readonly maxRetries?: number;
176
+ }
177
+
178
+ export interface BatchProgress {
179
+ readonly processed: number;
180
+ readonly total: number;
181
+ readonly percentage: number;
182
+ readonly status: 'pending' | 'running' | 'completed' | 'failed';
183
+ }
184
+
185
+ export interface BatchResult<T> {
186
+ readonly data: T[];
187
+ readonly progress: BatchProgress;
188
+ readonly startTime: number;
189
+ readonly endTime: number;
190
+ readonly duration: number;
191
+ readonly errors: Error[];
192
+ }
193
+
194
+ // ============================================================
195
+ // Metadata Types
196
+ // ============================================================
197
+
198
+ export interface PdfMetadata {
199
+ readonly title?: string;
200
+ readonly author?: string;
201
+ readonly subject?: string;
202
+ readonly keywords?: string;
203
+ readonly creator?: string;
204
+ readonly producer?: string;
205
+ readonly creationDate?: Date;
206
+ readonly modificationDate?: Date;
207
+ readonly pageCount: number;
208
+ readonly format?: string;
209
+ }
210
+
211
+ // ============================================================
212
+ // Manager Base Class Type
213
+ // ============================================================
214
+
215
+ export interface IManager extends EventEmitter {
216
+ readonly initialized: boolean;
217
+
218
+ destroy(): Promise<void>;
219
+ getState(): ManagerState;
220
+ }
221
+
222
+ export abstract class BaseManager<T extends PdfDocumentHandle = PdfDocumentHandle>
223
+ extends EventEmitter
224
+ implements IManager {
225
+
226
+ private _initialized = false;
227
+
228
+ get initialized(): boolean {
229
+ return this._initialized;
230
+ }
231
+
232
+ protected set initialized(value: boolean) {
233
+ this._initialized = value;
234
+ }
235
+ protected document: T;
236
+ protected cache: Map<string, unknown> = new Map();
237
+ protected operationCount = 0;
238
+ protected errorCount = 0;
239
+
240
+ constructor(document: T, protected options: ManagerOptions = {}) {
241
+ super();
242
+ this.document = document;
243
+ this.initialized = true;
244
+ }
245
+
246
+ abstract destroy(): Promise<void>;
247
+
248
+ getState(): ManagerState {
249
+ return {
250
+ initialized: this.initialized,
251
+ hasDocument: !!this.document,
252
+ operationCount: this.operationCount,
253
+ errorCount: this.errorCount,
254
+ };
255
+ }
256
+
257
+ protected recordOperation(): void {
258
+ this.operationCount++;
259
+ }
260
+
261
+ protected recordError(error: Error): void {
262
+ this.errorCount++;
263
+ this.emit('error', { error, timestamp: Date.now() });
264
+ }
265
+
266
+ protected getCached<V>(key: string): V | undefined {
267
+ return this.cache.get(key) as V | undefined;
268
+ }
269
+
270
+ protected setCached<V>(key: string, value: V): void {
271
+ if (this.options.enableCache !== false) {
272
+ this.cache.set(key, value);
273
+ }
274
+ }
275
+
276
+ protected invalidateCache(pattern?: string): void {
277
+ if (pattern) {
278
+ const keys = Array.from(this.cache.keys()).filter(k => k.includes(pattern));
279
+ keys.forEach(k => this.cache.delete(k));
280
+ } else {
281
+ this.cache.clear();
282
+ }
283
+ }
284
+ }