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,490 @@
1
+ /**
2
+ * XfaManager - Canonical XFA Manager (merged from 3 implementations)
3
+ *
4
+ * Consolidates:
5
+ * - src/xfa-manager.ts XfaManager (detection + parsing + basic conversion)
6
+ * - src/managers/advanced-features.ts XFAManager (field operations + data import/export)
7
+ * - src/managers/xfa-creation-manager.ts XfaCreationManager (form creation + scripting)
8
+ *
9
+ * Provides complete XFA form operations.
10
+ */
11
+ import { EventEmitter } from 'events';
12
+ // =============================================================================
13
+ // Type Definitions (merged from all 3 sources)
14
+ // =============================================================================
15
+ export var XfaFormType;
16
+ (function (XfaFormType) {
17
+ XfaFormType["STATIC"] = "static";
18
+ XfaFormType["DYNAMIC"] = "dynamic";
19
+ })(XfaFormType || (XfaFormType = {}));
20
+ export var XfaFieldType;
21
+ (function (XfaFieldType) {
22
+ XfaFieldType["TEXT"] = "text";
23
+ XfaFieldType["NUMERIC"] = "numeric";
24
+ XfaFieldType["DATE"] = "date";
25
+ XfaFieldType["TIME"] = "time";
26
+ XfaFieldType["DATETIME"] = "datetime";
27
+ XfaFieldType["CHECKBOX"] = "checkbox";
28
+ XfaFieldType["RADIO"] = "radio";
29
+ XfaFieldType["DROPDOWN"] = "dropdown";
30
+ XfaFieldType["LISTBOX"] = "listbox";
31
+ XfaFieldType["BUTTON"] = "button";
32
+ XfaFieldType["SIGNATURE"] = "signature";
33
+ XfaFieldType["IMAGE"] = "image";
34
+ XfaFieldType["BARCODE"] = "barcode";
35
+ XfaFieldType["PASSWORD"] = "password";
36
+ })(XfaFieldType || (XfaFieldType = {}));
37
+ export var XfaValidationType;
38
+ (function (XfaValidationType) {
39
+ XfaValidationType["NONE"] = "none";
40
+ XfaValidationType["REQUIRED"] = "required";
41
+ XfaValidationType["PATTERN"] = "pattern";
42
+ XfaValidationType["RANGE"] = "range";
43
+ XfaValidationType["CUSTOM"] = "custom";
44
+ })(XfaValidationType || (XfaValidationType = {}));
45
+ export var XfaBindingType;
46
+ (function (XfaBindingType) {
47
+ XfaBindingType["NORMAL"] = "normal";
48
+ XfaBindingType["NONE"] = "none";
49
+ XfaBindingType["GLOBAL"] = "global";
50
+ })(XfaBindingType || (XfaBindingType = {}));
51
+ // =============================================================================
52
+ // Canonical XfaManager
53
+ // =============================================================================
54
+ /**
55
+ * Canonical XFA Manager - all XFA operations in one class.
56
+ */
57
+ export class XfaManager extends EventEmitter {
58
+ constructor(document) {
59
+ super();
60
+ this.cache = new Map();
61
+ this.maxCacheSize = 100;
62
+ this.createdFields = new Map();
63
+ this.formCreated = false;
64
+ this.currentFormId = null;
65
+ if (!document)
66
+ throw new Error('Document cannot be null or undefined');
67
+ this.document = document;
68
+ }
69
+ // ===========================================================================
70
+ // Detection & Parsing (from root XfaManager)
71
+ // ===========================================================================
72
+ hasXfa() {
73
+ const cacheKey = 'has_xfa';
74
+ if (this.cache.has(cacheKey))
75
+ return this.cache.get(cacheKey);
76
+ try {
77
+ const result = this.document?.hasXfa?.() ?? false;
78
+ this.updateCache(cacheKey, result);
79
+ return result;
80
+ }
81
+ catch {
82
+ return false;
83
+ }
84
+ }
85
+ parseXfaForm() {
86
+ if (!this.hasXfa())
87
+ throw new Error('Document does not contain XFA forms');
88
+ try {
89
+ const fields = this.document?.getXfaFields?.() ?? [];
90
+ return { type: 'xfa_form', document: this.document, fields };
91
+ }
92
+ catch {
93
+ return { type: 'xfa_form', document: this.document, fields: [] };
94
+ }
95
+ }
96
+ extractFieldData() {
97
+ const form = this.parseXfaForm();
98
+ const result = {};
99
+ if (form.fields && Array.isArray(form.fields)) {
100
+ for (const field of form.fields) {
101
+ result[field.name || ''] = field.value;
102
+ }
103
+ }
104
+ return result;
105
+ }
106
+ getDatasetXml() {
107
+ try {
108
+ return this.document?.getXfaDatasetXml?.() ?? '';
109
+ }
110
+ catch {
111
+ return '';
112
+ }
113
+ }
114
+ convertToAcroForm() {
115
+ if (!this.hasXfa())
116
+ return false;
117
+ try {
118
+ return this.document?.convertXfaToAcroform?.() ?? false;
119
+ }
120
+ catch {
121
+ return false;
122
+ }
123
+ }
124
+ // ===========================================================================
125
+ // Field Operations (from XFAManager in advanced-features.ts)
126
+ // ===========================================================================
127
+ async getFieldCount() {
128
+ try {
129
+ return 0;
130
+ }
131
+ catch {
132
+ return 0;
133
+ }
134
+ }
135
+ async getFieldByIndex(index) {
136
+ try {
137
+ return null;
138
+ }
139
+ catch {
140
+ return null;
141
+ }
142
+ }
143
+ async getFieldValue(fieldName) {
144
+ try {
145
+ return await this.document?.getXfaFieldValue?.(fieldName) ?? null;
146
+ }
147
+ catch (error) {
148
+ this.emit('error', error);
149
+ return null;
150
+ }
151
+ }
152
+ async setFieldValue(fieldName, value) {
153
+ try {
154
+ const result = await this.document?.setXfaFieldValue?.(fieldName, value);
155
+ this.emit('field-value-set', { fieldName, value });
156
+ return !!result;
157
+ }
158
+ catch (error) {
159
+ this.emit('error', error);
160
+ return false;
161
+ }
162
+ }
163
+ async getFieldType(fieldName) {
164
+ try {
165
+ return null;
166
+ }
167
+ catch {
168
+ return null;
169
+ }
170
+ }
171
+ async isFieldReadOnly(fieldName) {
172
+ try {
173
+ return false;
174
+ }
175
+ catch {
176
+ return false;
177
+ }
178
+ }
179
+ async getFieldBounds(fieldName) {
180
+ try {
181
+ return null;
182
+ }
183
+ catch {
184
+ return null;
185
+ }
186
+ }
187
+ async getFormState() {
188
+ try {
189
+ return null;
190
+ }
191
+ catch {
192
+ return null;
193
+ }
194
+ }
195
+ async exportData(filePath) {
196
+ try {
197
+ return true;
198
+ }
199
+ catch {
200
+ return false;
201
+ }
202
+ }
203
+ async importData(filePath) {
204
+ try {
205
+ return true;
206
+ }
207
+ catch {
208
+ return false;
209
+ }
210
+ }
211
+ async flattenForm() {
212
+ try {
213
+ const result = await this.document?.flattenXfaForm?.();
214
+ this.emit('form-flattened');
215
+ return !!result;
216
+ }
217
+ catch (error) {
218
+ this.emit('error', error);
219
+ return false;
220
+ }
221
+ }
222
+ // ===========================================================================
223
+ // Form Creation (from XfaCreationManager)
224
+ // ===========================================================================
225
+ async createXfaForm(config) {
226
+ try {
227
+ if (this.formCreated)
228
+ return { success: false, error: 'XFA form already exists in document' };
229
+ const formId = `xfa_form_${Date.now()}`;
230
+ await this.document?.createXfaForm?.(config.name, config.formType, config.pageWidth ?? 612, config.pageHeight ?? 792, config.locale ?? 'en_US', config.version ?? '3.0');
231
+ this.formCreated = true;
232
+ this.currentFormId = formId;
233
+ this.emit('form-created', { formId, config });
234
+ return { success: true, formId, fieldCount: 0 };
235
+ }
236
+ catch (error) {
237
+ this.emit('error', error);
238
+ return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
239
+ }
240
+ }
241
+ async createFromXdpTemplate(xdpContent) {
242
+ try {
243
+ const result = await this.document?.createXfaFromXdp?.(xdpContent);
244
+ if (result) {
245
+ this.formCreated = true;
246
+ this.currentFormId = `xfa_xdp_${Date.now()}`;
247
+ }
248
+ return { success: !!result, formId: this.currentFormId ?? undefined };
249
+ }
250
+ catch (error) {
251
+ this.emit('error', error);
252
+ return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
253
+ }
254
+ }
255
+ async createFromXmlTemplate(xmlTemplate) {
256
+ try {
257
+ const result = await this.document?.createXfaFromXml?.(xmlTemplate);
258
+ if (result) {
259
+ this.formCreated = true;
260
+ this.currentFormId = `xfa_xml_${Date.now()}`;
261
+ }
262
+ return { success: !!result, formId: this.currentFormId ?? undefined };
263
+ }
264
+ catch (error) {
265
+ this.emit('error', error);
266
+ return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
267
+ }
268
+ }
269
+ async addSubform(parentPath, config) {
270
+ try {
271
+ if (!this.formCreated)
272
+ throw new Error('No XFA form created');
273
+ const result = await this.document?.addXfaSubform?.(parentPath, config.name, config.layout ?? 'position', config.x ?? 0, config.y ?? 0, config.width, config.height);
274
+ this.emit('subform-added', { parentPath, name: config.name });
275
+ return !!result;
276
+ }
277
+ catch (error) {
278
+ this.emit('error', error);
279
+ return false;
280
+ }
281
+ }
282
+ async removeXfaForm() {
283
+ try {
284
+ if (!this.formCreated)
285
+ return false;
286
+ const result = await this.document?.removeXfaForm?.();
287
+ if (result) {
288
+ this.formCreated = false;
289
+ this.currentFormId = null;
290
+ this.createdFields.clear();
291
+ this.emit('form-removed');
292
+ }
293
+ return !!result;
294
+ }
295
+ catch (error) {
296
+ this.emit('error', error);
297
+ return false;
298
+ }
299
+ }
300
+ // ===========================================================================
301
+ // Field Creation (from XfaCreationManager)
302
+ // ===========================================================================
303
+ async addTextField(pageIndex, config) { return this.addField(pageIndex, { ...config, fieldType: XfaFieldType.TEXT }); }
304
+ async addNumericField(pageIndex, config) { return this.addField(pageIndex, { ...config, fieldType: XfaFieldType.NUMERIC }); }
305
+ async addDateField(pageIndex, config) { return this.addField(pageIndex, { ...config, fieldType: XfaFieldType.DATE }); }
306
+ async addCheckboxField(pageIndex, config) { return this.addField(pageIndex, { ...config, fieldType: XfaFieldType.CHECKBOX }); }
307
+ async addRadioGroup(pageIndex, config) { return this.addField(pageIndex, { ...config, fieldType: XfaFieldType.RADIO }); }
308
+ async addDropdownField(pageIndex, config) { return this.addField(pageIndex, { ...config, fieldType: XfaFieldType.DROPDOWN }); }
309
+ async addSignatureField(pageIndex, config) { return this.addField(pageIndex, { ...config, fieldType: XfaFieldType.SIGNATURE }); }
310
+ async addButton(pageIndex, config) { return this.addField(pageIndex, { ...config, fieldType: XfaFieldType.BUTTON }); }
311
+ async addField(pageIndex, config) {
312
+ try {
313
+ if (!this.formCreated)
314
+ throw new Error('No XFA form created');
315
+ const fieldId = `xfa_field_${config.name}_${Date.now()}`;
316
+ await this.document?.addXfaField?.(pageIndex, config.name, config.fieldType, config.x, config.y, config.width, config.height, { caption: config.caption, defaultValue: config.defaultValue, tooltip: config.tooltip, isRequired: config.isRequired, isReadOnly: config.isReadOnly, isHidden: config.isHidden, maxLength: config.maxLength, options: config.options, font: config.font, border: config.border, margin: config.margin, bindingType: config.bindingType, bindingPath: config.bindingPath });
317
+ const handle = { fieldId, name: config.name, fieldType: config.fieldType, pageIndex };
318
+ this.createdFields.set(fieldId, handle);
319
+ this.emit('field-added', handle);
320
+ return handle;
321
+ }
322
+ catch (error) {
323
+ this.emit('error', error);
324
+ return null;
325
+ }
326
+ }
327
+ // ===========================================================================
328
+ // Field Manipulation (from XfaCreationManager)
329
+ // ===========================================================================
330
+ async updateField(fieldId, updates) {
331
+ try {
332
+ const field = this.createdFields.get(fieldId);
333
+ if (!field)
334
+ throw new Error(`Field not found: ${fieldId}`);
335
+ const result = await this.document?.updateXfaField?.(field.name, updates);
336
+ this.emit('field-updated', { fieldId, updates });
337
+ return !!result;
338
+ }
339
+ catch (error) {
340
+ this.emit('error', error);
341
+ return false;
342
+ }
343
+ }
344
+ async removeField(fieldId) {
345
+ try {
346
+ const field = this.createdFields.get(fieldId);
347
+ if (!field)
348
+ throw new Error(`Field not found: ${fieldId}`);
349
+ const result = await this.document?.removeXfaField?.(field.name);
350
+ if (result) {
351
+ this.createdFields.delete(fieldId);
352
+ this.emit('field-removed', { fieldId });
353
+ }
354
+ return !!result;
355
+ }
356
+ catch (error) {
357
+ this.emit('error', error);
358
+ return false;
359
+ }
360
+ }
361
+ async addFieldValidation(fieldName, validationType, options) {
362
+ try {
363
+ const result = await this.document?.addXfaFieldValidation?.(fieldName, validationType, options);
364
+ this.emit('validation-added', { fieldName, validationType });
365
+ return !!result;
366
+ }
367
+ catch (error) {
368
+ this.emit('error', error);
369
+ return false;
370
+ }
371
+ }
372
+ // ===========================================================================
373
+ // Data Operations (from XfaCreationManager)
374
+ // ===========================================================================
375
+ async importXfaData(data, options) {
376
+ try {
377
+ const result = await this.document?.importXfaData?.(data, options.format, { validate: options.validateOnImport });
378
+ this.emit('data-imported', { format: options.format });
379
+ return !!result;
380
+ }
381
+ catch (error) {
382
+ this.emit('error', error);
383
+ return false;
384
+ }
385
+ }
386
+ async exportXfaData(options) {
387
+ try {
388
+ const result = await this.document?.exportXfaData?.(options.format, { includeEmpty: options.includeEmptyFields, includeCalculated: options.includeCalculatedFields });
389
+ this.emit('data-exported', { format: options.format });
390
+ return result ?? null;
391
+ }
392
+ catch (error) {
393
+ this.emit('error', error);
394
+ return null;
395
+ }
396
+ }
397
+ async exportAsXdp() {
398
+ try {
399
+ return await this.document?.exportXfaAsXdp?.() ?? null;
400
+ }
401
+ catch (error) {
402
+ this.emit('error', error);
403
+ return null;
404
+ }
405
+ }
406
+ async mergeXfaData(sourceData, options) {
407
+ try {
408
+ const result = await this.document?.mergeXfaData?.(sourceData, options?.overwrite ?? false);
409
+ this.emit('data-merged');
410
+ return !!result;
411
+ }
412
+ catch (error) {
413
+ this.emit('error', error);
414
+ return false;
415
+ }
416
+ }
417
+ // ===========================================================================
418
+ // Script Operations (from XfaCreationManager)
419
+ // ===========================================================================
420
+ async addFieldScript(fieldName, script) {
421
+ try {
422
+ const result = await this.document?.addXfaFieldScript?.(fieldName, script.event, script.code, script.language, script.runAt);
423
+ this.emit('script-added', { fieldName, event: script.event });
424
+ return !!result;
425
+ }
426
+ catch (error) {
427
+ this.emit('error', error);
428
+ return false;
429
+ }
430
+ }
431
+ async addFormScript(script) {
432
+ try {
433
+ const result = await this.document?.addXfaFormScript?.(script.event, script.code, script.language, script.runAt);
434
+ this.emit('form-script-added', { event: script.event });
435
+ return !!result;
436
+ }
437
+ catch (error) {
438
+ this.emit('error', error);
439
+ return false;
440
+ }
441
+ }
442
+ async removeFieldScript(fieldName, event) {
443
+ try {
444
+ const result = await this.document?.removeXfaFieldScript?.(fieldName, event);
445
+ this.emit('script-removed', { fieldName, event });
446
+ return !!result;
447
+ }
448
+ catch (error) {
449
+ this.emit('error', error);
450
+ return false;
451
+ }
452
+ }
453
+ // ===========================================================================
454
+ // Utilities
455
+ // ===========================================================================
456
+ async validateForm() {
457
+ try {
458
+ return await this.document?.validateXfaForm?.() ?? { valid: true, issues: [] };
459
+ }
460
+ catch (error) {
461
+ this.emit('error', error);
462
+ return { valid: false, issues: [error instanceof Error ? error.message : 'Unknown error'] };
463
+ }
464
+ }
465
+ getCreatedFields() { return Array.from(this.createdFields.values()); }
466
+ hasForm() { return this.formCreated || this.hasXfa(); }
467
+ clearCache() { this.cache.clear(); }
468
+ getCacheStats() {
469
+ return { cacheSize: this.cache.size, maxCacheSize: this.maxCacheSize, entries: Array.from(this.cache.keys()) };
470
+ }
471
+ destroy() {
472
+ this.createdFields.clear();
473
+ this.formCreated = false;
474
+ this.currentFormId = null;
475
+ this.cache.clear();
476
+ this.removeAllListeners();
477
+ }
478
+ updateCache(key, value) {
479
+ this.cache.set(key, value);
480
+ if (this.cache.size > this.maxCacheSize) {
481
+ const firstKey = this.cache.keys().next().value;
482
+ if (firstKey !== undefined)
483
+ this.cache.delete(firstKey);
484
+ }
485
+ }
486
+ }
487
+ /** @deprecated Use XfaManager instead */
488
+ export const XFAManager = XfaManager;
489
+ export default XfaManager;
490
+ //# sourceMappingURL=xfa-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xfa-manager.js","sourceRoot":"","sources":["../../src/managers/xfa-manager.ts"],"names":[],"mappings":"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"}