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,472 @@
1
+ /**
2
+ * Stream API support for PDF Oxide Node.js
3
+ *
4
+ * Provides Readable streams for search results, text extraction, and page metadata.
5
+ * Supports backpressure handling and proper Node.js stream semantics.
6
+ *
7
+ * Phase 2.4 implementation for idiomatic Node.js patterns with Stream API.
8
+ */
9
+ import { Readable } from 'node:stream';
10
+ /**
11
+ * Readable stream for search results
12
+ *
13
+ * Emits search results one at a time with proper backpressure handling.
14
+ * Supports searching either a specific page or the entire document.
15
+ *
16
+ * Supports both traditional stream API (.on('data')) and async iteration (for await...of).
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * // Traditional stream API
21
+ * const stream = new SearchStream(searchManager, 'keyword');
22
+ * stream.on('data', (result) => {
23
+ * console.log(`Found on page ${result.pageIndex}: ${result.text}`);
24
+ * });
25
+ *
26
+ * // Async iteration
27
+ * const stream = new SearchStream(searchManager, 'keyword');
28
+ * for await (const result of stream) {
29
+ * console.log(`Found on page ${result.pageIndex}: ${result.text}`);
30
+ * }
31
+ * ```
32
+ */
33
+ export class SearchStream extends Readable {
34
+ /**
35
+ * Creates a new SearchStream
36
+ * @param searchManager - The search manager instance
37
+ * @param searchTerm - Text to search for
38
+ * @param options - Search options
39
+ * @throws Error if parameters are invalid
40
+ */
41
+ constructor(searchManager, searchTerm, options = {}) {
42
+ super({ objectMode: true });
43
+ if (!searchManager) {
44
+ throw new Error('SearchManager is required');
45
+ }
46
+ if (!searchTerm || typeof searchTerm !== 'string') {
47
+ throw new Error('Search term must be a non-empty string');
48
+ }
49
+ this.searchManager = searchManager;
50
+ this.searchTerm = searchTerm;
51
+ this.options = options;
52
+ this.pageIndex = options.pageIndex;
53
+ this.caseSensitive = options.caseSensitive ?? false;
54
+ this.wholeWords = options.wholeWords ?? false;
55
+ this.maxResults = options.maxResults ?? Infinity;
56
+ this._results = null;
57
+ this._currentIndex = 0;
58
+ this._resultCount = 0;
59
+ this._initialized = false;
60
+ this._ended = false;
61
+ }
62
+ /**
63
+ * Initialize results (lazy initialization)
64
+ * @private
65
+ */
66
+ _initialize() {
67
+ if (this._initialized)
68
+ return;
69
+ this._initialized = true;
70
+ try {
71
+ // Perform search
72
+ if (this.pageIndex !== undefined) {
73
+ this._results = (this.searchManager.search(this.searchTerm, this.pageIndex, { caseSensitive: this.caseSensitive, wholeWords: this.wholeWords }) || []);
74
+ }
75
+ else {
76
+ this._results = (this.searchManager.searchAll(this.searchTerm, { caseSensitive: this.caseSensitive, wholeWords: this.wholeWords }) || []);
77
+ }
78
+ // Apply max results limit
79
+ if (this._results && this._results.length > this.maxResults) {
80
+ this._results = this._results.slice(0, this.maxResults);
81
+ }
82
+ }
83
+ catch (error) {
84
+ this.destroy(error);
85
+ }
86
+ }
87
+ /**
88
+ * Implement _read() for readable stream
89
+ * @private
90
+ */
91
+ _read() {
92
+ // Initialize on first read
93
+ if (!this._initialized) {
94
+ this._initialize();
95
+ }
96
+ // Check if we have results to emit
97
+ if (!this._results || this._currentIndex >= this._results.length) {
98
+ // All results emitted
99
+ if (!this._ended) {
100
+ this._ended = true;
101
+ this.push(null);
102
+ }
103
+ return;
104
+ }
105
+ // Emit next result
106
+ const result = this._results[this._currentIndex];
107
+ this._currentIndex++;
108
+ // Format the result
109
+ const data = {
110
+ text: result.text || result.getText?.(),
111
+ pageIndex: result.pageIndex || result.page || 0,
112
+ position: result.position || 0,
113
+ boundingBox: result.boundingBox,
114
+ };
115
+ this.push(data);
116
+ }
117
+ /**
118
+ * Implement async iteration protocol for `for await...of` support
119
+ * @returns AsyncIterator for iterating over search results
120
+ */
121
+ async *[Symbol.asyncIterator]() {
122
+ // Initialize on first iteration
123
+ if (!this._initialized) {
124
+ this._initialize();
125
+ }
126
+ // Yield results one by one
127
+ while (this._results && this._currentIndex < this._results.length) {
128
+ const result = this._results[this._currentIndex];
129
+ this._currentIndex++;
130
+ const data = {
131
+ text: result.text || result.getText?.(),
132
+ pageIndex: result.pageIndex || result.page || 0,
133
+ position: result.position || 0,
134
+ boundingBox: result.boundingBox,
135
+ };
136
+ yield data;
137
+ }
138
+ if (!this._ended) {
139
+ this._ended = true;
140
+ this.destroy();
141
+ }
142
+ }
143
+ }
144
+ /**
145
+ * Readable stream for text extraction with progress tracking
146
+ *
147
+ * Emits extraction progress for each page with progress percentage.
148
+ * Supports multiple extraction formats: text, markdown, html.
149
+ * Supports both traditional stream API and async iteration.
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * // Traditional stream API
154
+ * const stream = new ExtractionStream(extractionManager, 0, 10, 'markdown');
155
+ * stream.on('data', (progress) => {
156
+ * console.log(`Progress: ${Math.round(progress.progress * 100)}%`);
157
+ * console.log(`Page ${progress.pageIndex + 1}: ${progress.extractedText.length} chars`);
158
+ * });
159
+ *
160
+ * // Async iteration
161
+ * const stream = new ExtractionStream(extractionManager, 0, 10, 'markdown');
162
+ * for await (const progress of stream) {
163
+ * console.log(`Progress: ${Math.round(progress.progress * 100)}%`);
164
+ * }
165
+ * ```
166
+ */
167
+ export class ExtractionStream extends Readable {
168
+ /**
169
+ * Creates a new ExtractionStream
170
+ * @param extractionManager - The extraction manager instance
171
+ * @param startPage - Starting page index (inclusive)
172
+ * @param endPage - Ending page index (exclusive)
173
+ * @param extractionType - 'text', 'markdown', or 'html'
174
+ * @param options - Additional extraction options
175
+ * @throws Error if parameters are invalid
176
+ */
177
+ constructor(extractionManager, startPage, endPage, extractionType = 'text', options = {}) {
178
+ super({ objectMode: true });
179
+ if (!extractionManager) {
180
+ throw new Error('ExtractionManager is required');
181
+ }
182
+ if (typeof startPage !== 'number' || startPage < 0) {
183
+ throw new Error('Start page must be a non-negative number');
184
+ }
185
+ if (typeof endPage !== 'number' || endPage <= startPage) {
186
+ throw new Error('End page must be greater than start page');
187
+ }
188
+ if (!['text', 'markdown', 'html'].includes(extractionType)) {
189
+ throw new Error("Extraction type must be 'text', 'markdown', or 'html'");
190
+ }
191
+ this.extractionManager = extractionManager;
192
+ this.startPage = startPage;
193
+ this.endPage = endPage;
194
+ this.extractionType = extractionType;
195
+ this.options = options;
196
+ this._currentPage = startPage;
197
+ this._totalPages = endPage - startPage;
198
+ this._ended = false;
199
+ }
200
+ /**
201
+ * Implement _read() for readable stream
202
+ * @private
203
+ */
204
+ _read() {
205
+ // Check if we've processed all pages
206
+ if (this._currentPage >= this.endPage) {
207
+ if (!this._ended) {
208
+ this._ended = true;
209
+ this.push(null);
210
+ }
211
+ return;
212
+ }
213
+ try {
214
+ // Extract current page
215
+ let extractedText;
216
+ if (this.extractionType === 'markdown') {
217
+ extractedText = this.extractionManager.extractMarkdown(this._currentPage, this.options);
218
+ }
219
+ else if (this.extractionType === 'html') {
220
+ extractedText = this.extractionManager.extractHtml(this._currentPage, this.options);
221
+ }
222
+ else {
223
+ extractedText = this.extractionManager.extractText(this._currentPage, this.options);
224
+ }
225
+ // Emit progress object
226
+ const progress = {
227
+ pageIndex: this._currentPage,
228
+ totalPages: this._totalPages,
229
+ extractedText: extractedText || '',
230
+ extractionType: this.extractionType,
231
+ progress: (this._currentPage - this.startPage + 1) / this._totalPages,
232
+ };
233
+ this._currentPage++;
234
+ this.push(progress);
235
+ }
236
+ catch (error) {
237
+ this.destroy(error);
238
+ }
239
+ }
240
+ /**
241
+ * Implement async iteration protocol for `for await...of` support
242
+ * @returns AsyncGenerator for iterating over extraction progress
243
+ */
244
+ async *[Symbol.asyncIterator]() {
245
+ // Process each page
246
+ while (this._currentPage < this.endPage) {
247
+ try {
248
+ // Extract current page
249
+ let extractedText;
250
+ if (this.extractionType === 'markdown') {
251
+ extractedText = this.extractionManager.extractMarkdown(this._currentPage, this.options);
252
+ }
253
+ else if (this.extractionType === 'html') {
254
+ extractedText = this.extractionManager.extractHtml(this._currentPage, this.options);
255
+ }
256
+ else {
257
+ extractedText = this.extractionManager.extractText(this._currentPage, this.options);
258
+ }
259
+ // Create progress object
260
+ const progress = {
261
+ pageIndex: this._currentPage,
262
+ totalPages: this._totalPages,
263
+ extractedText: extractedText || '',
264
+ extractionType: this.extractionType,
265
+ progress: (this._currentPage - this.startPage + 1) / this._totalPages,
266
+ };
267
+ this._currentPage++;
268
+ yield progress;
269
+ }
270
+ catch (error) {
271
+ this.destroy(error);
272
+ return;
273
+ }
274
+ }
275
+ if (!this._ended) {
276
+ this._ended = true;
277
+ this.destroy();
278
+ }
279
+ }
280
+ }
281
+ /**
282
+ * Readable stream for page metadata retrieval
283
+ *
284
+ * Emits page metadata (dimensions, fonts, images) for each page in range.
285
+ * Supports lazy loading of metadata per page.
286
+ * Supports both traditional stream API and async iteration.
287
+ *
288
+ * @example
289
+ * ```typescript
290
+ * // Traditional stream API
291
+ * const stream = new MetadataStream(renderingManager, 0, 10);
292
+ * stream.on('data', (metadata) => {
293
+ * console.log(`Page ${metadata.pageIndex + 1}: ${metadata.width}x${metadata.height}`);
294
+ * console.log(` Fonts: ${metadata.fontCount}, Images: ${metadata.imageCount}`);
295
+ * });
296
+ *
297
+ * // Async iteration
298
+ * const stream = new MetadataStream(renderingManager, 0, 10);
299
+ * for await (const metadata of stream) {
300
+ * console.log(`Page ${metadata.pageIndex + 1}: ${metadata.width}x${metadata.height}`);
301
+ * }
302
+ * ```
303
+ */
304
+ export class MetadataStream extends Readable {
305
+ /**
306
+ * Creates a new MetadataStream
307
+ * @param renderingManager - The rendering manager instance
308
+ * @param startPage - Starting page index (inclusive)
309
+ * @param endPage - Ending page index (exclusive)
310
+ * @throws Error if parameters are invalid
311
+ */
312
+ constructor(renderingManager, startPage, endPage) {
313
+ super({ objectMode: true });
314
+ if (!renderingManager) {
315
+ throw new Error('RenderingManager is required');
316
+ }
317
+ if (typeof startPage !== 'number' || startPage < 0) {
318
+ throw new Error('Start page must be a non-negative number');
319
+ }
320
+ if (typeof endPage !== 'number' || endPage <= startPage) {
321
+ throw new Error('End page must be greater than start page');
322
+ }
323
+ this.renderingManager = renderingManager;
324
+ this.startPage = startPage;
325
+ this.endPage = endPage;
326
+ this._currentPage = startPage;
327
+ this._ended = false;
328
+ }
329
+ /**
330
+ * Implement _read() for readable stream
331
+ * @private
332
+ */
333
+ _read() {
334
+ // Check if we've processed all pages
335
+ if (this._currentPage >= this.endPage) {
336
+ if (!this._ended) {
337
+ this._ended = true;
338
+ this.push(null);
339
+ }
340
+ return;
341
+ }
342
+ try {
343
+ // Get page dimensions
344
+ const dimensions = this.renderingManager.getPageDimensions(this._currentPage);
345
+ // Get embedded resources
346
+ const fonts = this.renderingManager.getEmbeddedFonts?.(this._currentPage) || [];
347
+ const images = this.renderingManager.getEmbeddedImages?.(this._currentPage) || [];
348
+ // Get rotation
349
+ const rotation = dimensions?.rotation || 0;
350
+ // Emit metadata object
351
+ const metadata = {
352
+ pageIndex: this._currentPage,
353
+ width: dimensions?.width || 0,
354
+ height: dimensions?.height || 0,
355
+ fontCount: Array.isArray(fonts) ? fonts.length : 0,
356
+ imageCount: Array.isArray(images) ? images.length : 0,
357
+ rotation: rotation,
358
+ };
359
+ this._currentPage++;
360
+ this.push(metadata);
361
+ }
362
+ catch (error) {
363
+ this.destroy(error);
364
+ }
365
+ }
366
+ /**
367
+ * Implement async iteration protocol for `for await...of` support
368
+ * @returns AsyncGenerator for iterating over page metadata
369
+ */
370
+ async *[Symbol.asyncIterator]() {
371
+ // Process each page
372
+ while (this._currentPage < this.endPage) {
373
+ try {
374
+ // Get page dimensions
375
+ const dimensions = this.renderingManager.getPageDimensions(this._currentPage);
376
+ // Get embedded resources
377
+ const fonts = this.renderingManager.getEmbeddedFonts?.(this._currentPage) || [];
378
+ const images = this.renderingManager.getEmbeddedImages?.(this._currentPage) || [];
379
+ // Get rotation
380
+ const rotation = dimensions?.rotation || 0;
381
+ // Create metadata object
382
+ const metadata = {
383
+ pageIndex: this._currentPage,
384
+ width: dimensions?.width || 0,
385
+ height: dimensions?.height || 0,
386
+ fontCount: Array.isArray(fonts) ? fonts.length : 0,
387
+ imageCount: Array.isArray(images) ? images.length : 0,
388
+ rotation: rotation,
389
+ };
390
+ this._currentPage++;
391
+ yield metadata;
392
+ }
393
+ catch (error) {
394
+ this.destroy(error);
395
+ return;
396
+ }
397
+ }
398
+ if (!this._ended) {
399
+ this._ended = true;
400
+ this.destroy();
401
+ }
402
+ }
403
+ }
404
+ /**
405
+ * Creates a readable stream for search results
406
+ *
407
+ * Convenience function to create a SearchStream instance.
408
+ *
409
+ * @param searchManager - The search manager
410
+ * @param searchTerm - Text to search for
411
+ * @param options - Search options
412
+ * @returns A readable stream of search results
413
+ *
414
+ * @example
415
+ * ```typescript
416
+ * createSearchStream(manager, 'error')
417
+ * .pipe(through2.obj((result, enc, cb) => {
418
+ * console.log(`Found: ${result.text}`);
419
+ * cb();
420
+ * }));
421
+ * ```
422
+ */
423
+ export function createSearchStream(searchManager, searchTerm, options = {}) {
424
+ return new SearchStream(searchManager, searchTerm, options);
425
+ }
426
+ /**
427
+ * Creates a readable stream for extraction with progress
428
+ *
429
+ * Convenience function to create an ExtractionStream instance.
430
+ *
431
+ * @param extractionManager - The extraction manager
432
+ * @param startPage - Starting page index
433
+ * @param endPage - Ending page index
434
+ * @param extractionType - Extraction format
435
+ * @param options - Additional options
436
+ * @returns A readable stream of extraction progress
437
+ *
438
+ * @example
439
+ * ```typescript
440
+ * createExtractionStream(manager, 0, 10, 'markdown')
441
+ * .pipe(through2.obj((progress, enc, cb) => {
442
+ * console.log(`${Math.round(progress.progress * 100)}% complete`);
443
+ * cb();
444
+ * }));
445
+ * ```
446
+ */
447
+ export function createExtractionStream(extractionManager, startPage, endPage, extractionType = 'text', options = {}) {
448
+ return new ExtractionStream(extractionManager, startPage, endPage, extractionType, options);
449
+ }
450
+ /**
451
+ * Creates a readable stream for page metadata
452
+ *
453
+ * Convenience function to create a MetadataStream instance.
454
+ *
455
+ * @param renderingManager - The rendering manager
456
+ * @param startPage - Starting page index
457
+ * @param endPage - Ending page index
458
+ * @returns A readable stream of page metadata
459
+ *
460
+ * @example
461
+ * ```typescript
462
+ * createMetadataStream(manager, 0, 10)
463
+ * .pipe(through2.obj((metadata, enc, cb) => {
464
+ * console.log(`Page ${metadata.pageIndex}: ${metadata.width}x${metadata.height}`);
465
+ * cb();
466
+ * }));
467
+ * ```
468
+ */
469
+ export function createMetadataStream(renderingManager, startPage, endPage) {
470
+ return new MetadataStream(renderingManager, startPage, endPage);
471
+ }
472
+ //# sourceMappingURL=streams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streams.js","sourceRoot":"","sources":["../../src/managers/streams.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmCvC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,YAAa,SAAQ,QAAQ;IAcxC;;;;;;OAMG;IACH,YAAY,aAAkB,EAAE,UAAkB,EAAE,UAA+B,EAAE;QACnF,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5B,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC;QAEjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;;OAGG;IACK,WAAW;QACjB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,IAAI,CAAC;YACH,iBAAiB;YACjB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CACxC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,EACd,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CACnE,IAAI,EAAE,CAAU,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAC3C,IAAI,CAAC,UAAU,EACf,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CACnE,IAAI,EAAE,CAAU,CAAC;YACpB,CAAC;YAED,0BAA0B;YAC1B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACjE,sBAAsB;YACtB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;YACD,OAAO;QACT,CAAC;QAED,mBAAmB;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,oBAAoB;QACpB,MAAM,IAAI,GAAqB;YAC7B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;YACvC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC;YAC/C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;YAC9B,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,gCAAgC;QAChC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;QAED,2BAA2B;QAC3B,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjD,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,MAAM,IAAI,GAAqB;gBAC7B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;gBACvC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC;gBAC/C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;gBAC9B,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC;YAEF,MAAM,IAAI,CAAC;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;CAEF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAU5C;;;;;;;;OAQG;IACH,YACE,iBAAsB,EACtB,SAAiB,EACjB,OAAe,EACf,iBAA+C,MAAM,EACrD,UAA+B,EAAE;QAEjC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,qCAAqC;QACrC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,uBAAuB;YACvB,IAAI,aAAqB,CAAC;YAC1B,IAAI,IAAI,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;gBACvC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpD,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,CACb,CAAC;YACJ,CAAC;iBAAM,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;gBAC1C,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAChD,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,CACb,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAChD,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,CACb,CAAC;YACJ,CAAC;YAED,uBAAuB;YACvB,MAAM,QAAQ,GAA2B;gBACvC,SAAS,EAAE,IAAI,CAAC,YAAY;gBAC5B,UAAU,EAAE,IAAI,CAAC,WAAW;gBAC5B,aAAa,EAAE,aAAa,IAAI,EAAE;gBAClC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,QAAQ,EAAE,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW;aACtE,CAAC;YAEF,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,oBAAoB;QACpB,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,uBAAuB;gBACvB,IAAI,aAAqB,CAAC;gBAC1B,IAAI,IAAI,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;oBACvC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpD,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,CACb,CAAC;gBACJ,CAAC;qBAAM,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;oBAC1C,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAChD,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,CACb,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAChD,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,CACb,CAAC;gBACJ,CAAC;gBAED,yBAAyB;gBACzB,MAAM,QAAQ,GAA2B;oBACvC,SAAS,EAAE,IAAI,CAAC,YAAY;oBAC5B,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,aAAa,EAAE,aAAa,IAAI,EAAE;oBAClC,cAAc,EAAE,IAAI,CAAC,cAAc;oBACnC,QAAQ,EAAE,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW;iBACtE,CAAC;gBAEF,IAAI,CAAC,YAAY,EAAE,CAAC;gBAEpB,MAAM,QAAQ,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAO1C;;;;;;OAMG;IACH,YAAY,gBAAqB,EAAE,SAAiB,EAAE,OAAe;QACnE,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,qCAAqC;QACrC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,sBAAsB;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE9E,yBAAyB;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAChF,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAElF,eAAe;YACf,MAAM,QAAQ,GAAG,UAAU,EAAE,QAAQ,IAAI,CAAC,CAAC;YAE3C,uBAAuB;YACvB,MAAM,QAAQ,GAAqB;gBACjC,SAAS,EAAE,IAAI,CAAC,YAAY;gBAC5B,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;gBAC7B,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;gBAC/B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAClD,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACrD,QAAQ,EAAE,QAAQ;aACnB,CAAC;YAEF,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,oBAAoB;QACpB,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,sBAAsB;gBACtB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAE9E,yBAAyB;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBAChF,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBAElF,eAAe;gBACf,MAAM,QAAQ,GAAG,UAAU,EAAE,QAAQ,IAAI,CAAC,CAAC;gBAE3C,yBAAyB;gBACzB,MAAM,QAAQ,GAAqB;oBACjC,SAAS,EAAE,IAAI,CAAC,YAAY;oBAC5B,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;oBAC7B,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;oBAC/B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAClD,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACrD,QAAQ,EAAE,QAAQ;iBACnB,CAAC;gBAEF,IAAI,CAAC,YAAY,EAAE,CAAC;gBAEpB,MAAM,QAAQ,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,kBAAkB,CAChC,aAAkB,EAClB,UAAkB,EAClB,UAA+B,EAAE;IAEjC,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,sBAAsB,CACpC,iBAAsB,EACtB,SAAiB,EACjB,OAAe,EACf,iBAA+C,MAAM,EACrD,UAA+B,EAAE;IAEjC,OAAO,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AAC9F,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAClC,gBAAqB,EACrB,SAAiB,EACjB,OAAe;IAEf,OAAO,IAAI,cAAc,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAClE,CAAC"}