@docmentis/udoc-viewer 0.2.1 → 0.2.2

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 (52) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/src/UDocClient.d.ts +98 -3
  3. package/dist/src/UDocClient.d.ts.map +1 -1
  4. package/dist/src/UDocClient.js +169 -24
  5. package/dist/src/UDocClient.js.map +1 -1
  6. package/dist/src/UDocViewer.d.ts +21 -5
  7. package/dist/src/UDocViewer.d.ts.map +1 -1
  8. package/dist/src/UDocViewer.js +45 -35
  9. package/dist/src/UDocViewer.js.map +1 -1
  10. package/dist/src/ui/viewer/components/LeftPanel.d.ts +2 -2
  11. package/dist/src/ui/viewer/components/LeftPanel.d.ts.map +1 -1
  12. package/dist/src/ui/viewer/components/LeftPanel.js +6 -6
  13. package/dist/src/ui/viewer/components/LeftPanel.js.map +1 -1
  14. package/dist/src/ui/viewer/components/Spread.d.ts +2 -2
  15. package/dist/src/ui/viewer/components/Spread.d.ts.map +1 -1
  16. package/dist/src/ui/viewer/components/Spread.js +2 -2
  17. package/dist/src/ui/viewer/components/Spread.js.map +1 -1
  18. package/dist/src/ui/viewer/components/ThumbnailPanel.d.ts +2 -2
  19. package/dist/src/ui/viewer/components/ThumbnailPanel.d.ts.map +1 -1
  20. package/dist/src/ui/viewer/components/ThumbnailPanel.js +5 -5
  21. package/dist/src/ui/viewer/components/ThumbnailPanel.js.map +1 -1
  22. package/dist/src/ui/viewer/components/Viewport.d.ts +2 -2
  23. package/dist/src/ui/viewer/components/Viewport.d.ts.map +1 -1
  24. package/dist/src/ui/viewer/components/Viewport.js +9 -9
  25. package/dist/src/ui/viewer/components/Viewport.js.map +1 -1
  26. package/dist/src/ui/viewer/effects.d.ts +2 -2
  27. package/dist/src/ui/viewer/effects.d.ts.map +1 -1
  28. package/dist/src/ui/viewer/effects.js +7 -6
  29. package/dist/src/ui/viewer/effects.js.map +1 -1
  30. package/dist/src/ui/viewer/shell.d.ts +2 -5
  31. package/dist/src/ui/viewer/shell.d.ts.map +1 -1
  32. package/dist/src/ui/viewer/shell.js +4 -6
  33. package/dist/src/ui/viewer/shell.js.map +1 -1
  34. package/dist/src/wasm/udoc.d.ts +105 -27
  35. package/dist/src/wasm/udoc.js +219 -44
  36. package/dist/src/wasm/udoc_bg.wasm +0 -0
  37. package/dist/src/wasm/udoc_bg.wasm.d.ts +6 -1
  38. package/dist/src/worker/WorkerClient.d.ts +91 -9
  39. package/dist/src/worker/WorkerClient.d.ts.map +1 -1
  40. package/dist/src/worker/WorkerClient.js +293 -15
  41. package/dist/src/worker/WorkerClient.js.map +1 -1
  42. package/dist/src/worker/index.d.ts +1 -1
  43. package/dist/src/worker/index.d.ts.map +1 -1
  44. package/dist/src/worker/worker.d.ts +92 -3
  45. package/dist/src/worker/worker.d.ts.map +1 -1
  46. package/dist/src/worker/worker.js +33 -3
  47. package/dist/src/worker/worker.js.map +1 -1
  48. package/package.json +1 -1
  49. package/dist/src/ui/viewer/rendering/RenderManager.d.ts +0 -76
  50. package/dist/src/ui/viewer/rendering/RenderManager.d.ts.map +0 -1
  51. package/dist/src/ui/viewer/rendering/RenderManager.js +0 -236
  52. package/dist/src/ui/viewer/rendering/RenderManager.js.map +0 -1
@@ -3,7 +3,6 @@
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const __wbg_udoc_free: (a: number, b: number) => void;
5
5
  export const udoc_all_page_info: (a: number, b: number, c: number, d: number) => void;
6
- export const udoc_compose_pdf: (a: number, b: number, c: number, d: number) => void;
7
6
  export const udoc_document_count: (a: number) => number;
8
7
  export const udoc_document_ids: (a: number, b: number) => void;
9
8
  export const udoc_get_annotations: (a: number, b: number, c: number, d: number) => void;
@@ -19,6 +18,12 @@ export const udoc_new: () => number;
19
18
  export const udoc_page_count: (a: number, b: number, c: number, d: number) => void;
20
19
  export const udoc_page_info: (a: number, b: number, c: number, d: number, e: number) => void;
21
20
  export const udoc_page_layout: (a: number, b: number, c: number, d: number) => void;
21
+ export const udoc_pdf_compose: (a: number, b: number, c: number, d: number) => void;
22
+ export const udoc_pdf_compress: (a: number, b: number, c: number, d: number) => void;
23
+ export const udoc_pdf_decompress: (a: number, b: number, c: number, d: number) => void;
24
+ export const udoc_pdf_extract_fonts: (a: number, b: number, c: number, d: number) => void;
25
+ export const udoc_pdf_extract_images: (a: number, b: number, c: number, d: number) => void;
26
+ export const udoc_pdf_split_by_outline: (a: number, b: number, c: number, d: number, e: number) => void;
22
27
  export const udoc_remove_document: (a: number, b: number, c: number) => number;
23
28
  export const udoc_render_page_to_png: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
24
29
  export const udoc_render_page_to_rgba: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
@@ -2,10 +2,11 @@
2
2
  * Low-level client for communicating with the UDoc worker.
3
3
  *
4
4
  * Provides a Promise-based API for document operations.
5
+ * Also handles render queue, cache, and priority management.
5
6
  * This is an internal API - use UDocClient for the public SDK.
6
7
  */
7
- import type { Composition, ComposePick, LicenseResult } from "./worker.js";
8
- export type { Composition, ComposePick };
8
+ import type { Composition, ComposePick, ExtractedFont, ExtractedImage, LicenseResult, OutlineSection, SplitByOutlineResult } from "./worker.js";
9
+ export type { Composition, ComposePick, ExtractedFont, ExtractedImage, OutlineSection, SplitByOutlineResult };
9
10
  export type { LicenseResult };
10
11
  export interface PageInfo {
11
12
  width: number;
@@ -13,8 +14,15 @@ export interface PageInfo {
13
14
  /** Document rotation in degrees (0, 90, 180, or 270) */
14
15
  rotation: 0 | 90 | 180 | 270;
15
16
  }
16
- export interface RenderedPage {
17
- rgba: Uint8Array;
17
+ export type RenderType = "page" | "thumbnail";
18
+ export interface RenderRequest {
19
+ docId: string;
20
+ page: number;
21
+ type: RenderType;
22
+ scale: number;
23
+ }
24
+ export interface RenderResult {
25
+ bitmap: ImageBitmap;
18
26
  width: number;
19
27
  height: number;
20
28
  }
@@ -22,6 +30,12 @@ export declare class WorkerClient {
22
30
  private worker;
23
31
  private requestId;
24
32
  private pending;
33
+ private renderCache;
34
+ private renderQueue;
35
+ private renderInFlight;
36
+ private maxCacheSize;
37
+ private maxConcurrent;
38
+ private activeRenderCount;
25
39
  private constructor();
26
40
  /**
27
41
  * Create a WorkerClient using the bundled worker.
@@ -74,10 +88,6 @@ export declare class WorkerClient {
74
88
  * Get the page layout preference.
75
89
  */
76
90
  getPageLayout(id: string): Promise<string>;
77
- /**
78
- * Render a page to RGBA pixels.
79
- */
80
- renderPage(id: string, pageIndex: number, width: number, height: number): Promise<RenderedPage>;
81
91
  /**
82
92
  * Get the document outline.
83
93
  */
@@ -98,11 +108,83 @@ export declare class WorkerClient {
98
108
  * @param docIds - Array of document IDs to use as sources (order matters for doc indices)
99
109
  * @returns Array of new document IDs (one per composition)
100
110
  */
101
- composePdf(compositions: Composition[], docIds: string[]): Promise<string[]>;
111
+ pdfCompose(compositions: Composition[], docIds: string[]): Promise<string[]>;
112
+ /**
113
+ * Split a PDF document by its outline (bookmarks) structure.
114
+ *
115
+ * @param id - Document ID to split
116
+ * @param maxLevel - Maximum outline level to consider (1 = top level only)
117
+ * @returns Object with documentIds and sections
118
+ */
119
+ pdfSplitByOutline(id: string, maxLevel: number): Promise<SplitByOutlineResult>;
120
+ /**
121
+ * Extract all embedded images from a PDF document.
122
+ *
123
+ * @param id - Document ID to extract images from
124
+ * @returns Array of extracted images with metadata and data
125
+ */
126
+ pdfExtractImages(id: string): Promise<ExtractedImage[]>;
127
+ /**
128
+ * Extract all embedded fonts from a PDF document.
129
+ *
130
+ * @param id - Document ID to extract fonts from
131
+ * @returns Array of extracted fonts with metadata and data
132
+ */
133
+ pdfExtractFonts(id: string): Promise<ExtractedFont[]>;
134
+ /**
135
+ * Compress a PDF document.
136
+ *
137
+ * Saves the document with full compression options enabled.
138
+ *
139
+ * @param id - Document ID to compress
140
+ * @returns Compressed PDF data
141
+ */
142
+ pdfCompress(id: string): Promise<Uint8Array>;
143
+ /**
144
+ * Decompress a PDF document.
145
+ *
146
+ * Removes all filter encodings from streams, resulting in raw,
147
+ * uncompressed stream data.
148
+ *
149
+ * @param id - Document ID to decompress
150
+ * @returns Decompressed PDF data
151
+ */
152
+ pdfDecompress(id: string): Promise<Uint8Array>;
102
153
  /**
103
154
  * Get the raw PDF bytes of a document.
104
155
  */
105
156
  getBytes(id: string): Promise<Uint8Array>;
157
+ /**
158
+ * Request a render. Returns cached result if available,
159
+ * otherwise queues the request.
160
+ */
161
+ requestRender(req: RenderRequest): Promise<RenderResult>;
162
+ /**
163
+ * Get a cached result without queuing a render.
164
+ */
165
+ getCachedRender(docId: string, page: number, type: RenderType, scale: number): RenderResult | null;
166
+ /**
167
+ * Cancel pending render requests matching criteria.
168
+ * Does not cancel in-flight requests.
169
+ */
170
+ cancelRenders(docId?: string, page?: number, type?: RenderType): void;
171
+ /**
172
+ * Invalidate cache entries. Call when document or zoom changes.
173
+ */
174
+ invalidateRenderCache(docId?: string): void;
175
+ /**
176
+ * Boost priority for the target page and nearby pages.
177
+ * Target page gets highest priority, nearby pages get slightly lower.
178
+ */
179
+ boostRenderPriority(docId: string, page: number): void;
180
+ /**
181
+ * Clean up render resources.
182
+ */
183
+ destroyRenderResources(): void;
184
+ private processRenderQueue;
185
+ private doRender;
186
+ private addToRenderCache;
187
+ private evictLRU;
106
188
  /**
107
189
  * Terminate the worker.
108
190
  */
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerClient.d.ts","sourceRoot":"","sources":["../../../src/worker/WorkerClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAiC,MAAM,aAAa,CAAC;AAE1G,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AAEzC,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAGX;IAEJ,OAAO;IAMP;;;OAGG;IACH,MAAM,CAAC,MAAM,IAAI,YAAY;IAM7B;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,GAAG,YAAY;IAK3D;;OAEG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C;;;;;OAKG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOzE;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC;IAOhD;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IASjD;;;OAGG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7C;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/C;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKnE;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAOrD;;OAEG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhD;;OAEG;IACG,UAAU,CACd,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC;IAWxB;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAKhD;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAO3E;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAOpE;;;;;;;OAOG;IACG,UAAU,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAOlF;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAK/C;;OAEG;IACH,SAAS,IAAI,IAAI;IAQjB,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,WAAW;CAGpB"}
1
+ {"version":3,"file":"WorkerClient.d.ts","sourceRoot":"","sources":["../../../src/worker/WorkerClient.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,27 @@
2
2
  * Low-level client for communicating with the UDoc worker.
3
3
  *
4
4
  * Provides a Promise-based API for document operations.
5
+ * Also handles render queue, cache, and priority management.
5
6
  * This is an internal API - use UDocClient for the public SDK.
6
7
  */
8
+ function makeRenderKey(docId, page, type, scale) {
9
+ return `${docId}:${page}:${type}:${scale}`;
10
+ }
11
+ /** Base priority by render type (page renders are more important than thumbnails) */
12
+ function getBasePriority(type) {
13
+ return type === "page" ? 100 : 50;
14
+ }
7
15
  export class WorkerClient {
8
16
  worker;
9
17
  requestId = 0;
10
18
  pending = new Map();
19
+ // Render management state
20
+ renderCache = new Map();
21
+ renderQueue = [];
22
+ renderInFlight = new Map();
23
+ maxCacheSize = 100;
24
+ maxConcurrent = 2;
25
+ activeRenderCount = 0;
11
26
  constructor(worker) {
12
27
  this.worker = worker;
13
28
  this.worker.onmessage = this.handleMessage.bind(this);
@@ -101,19 +116,6 @@ export class WorkerClient {
101
116
  const response = (await this.send({ type: "getPageLayout", id }));
102
117
  return response.layout;
103
118
  }
104
- /**
105
- * Render a page to RGBA pixels.
106
- */
107
- async renderPage(id, pageIndex, width, height) {
108
- const response = (await this.send({
109
- type: "renderPage",
110
- id,
111
- pageIndex,
112
- width,
113
- height,
114
- }));
115
- return response;
116
- }
117
119
  /**
118
120
  * Get the document outline.
119
121
  */
@@ -143,10 +145,66 @@ export class WorkerClient {
143
145
  * @param docIds - Array of document IDs to use as sources (order matters for doc indices)
144
146
  * @returns Array of new document IDs (one per composition)
145
147
  */
146
- async composePdf(compositions, docIds) {
147
- const response = (await this.send({ type: "composePdf", compositions, docIds }));
148
+ async pdfCompose(compositions, docIds) {
149
+ const response = (await this.send({ type: "pdfCompose", compositions, docIds }));
148
150
  return response.documentIds;
149
151
  }
152
+ /**
153
+ * Split a PDF document by its outline (bookmarks) structure.
154
+ *
155
+ * @param id - Document ID to split
156
+ * @param maxLevel - Maximum outline level to consider (1 = top level only)
157
+ * @returns Object with documentIds and sections
158
+ */
159
+ async pdfSplitByOutline(id, maxLevel) {
160
+ const response = (await this.send({ type: "pdfSplitByOutline", id, maxLevel }));
161
+ return response.result;
162
+ }
163
+ /**
164
+ * Extract all embedded images from a PDF document.
165
+ *
166
+ * @param id - Document ID to extract images from
167
+ * @returns Array of extracted images with metadata and data
168
+ */
169
+ async pdfExtractImages(id) {
170
+ const response = (await this.send({ type: "pdfExtractImages", id }));
171
+ return response.images;
172
+ }
173
+ /**
174
+ * Extract all embedded fonts from a PDF document.
175
+ *
176
+ * @param id - Document ID to extract fonts from
177
+ * @returns Array of extracted fonts with metadata and data
178
+ */
179
+ async pdfExtractFonts(id) {
180
+ const response = (await this.send({ type: "pdfExtractFonts", id }));
181
+ return response.fonts;
182
+ }
183
+ /**
184
+ * Compress a PDF document.
185
+ *
186
+ * Saves the document with full compression options enabled.
187
+ *
188
+ * @param id - Document ID to compress
189
+ * @returns Compressed PDF data
190
+ */
191
+ async pdfCompress(id) {
192
+ const response = (await this.send({ type: "pdfCompress", id }));
193
+ return response.bytes;
194
+ }
195
+ /**
196
+ * Decompress a PDF document.
197
+ *
198
+ * Removes all filter encodings from streams, resulting in raw,
199
+ * uncompressed stream data.
200
+ *
201
+ * @param id - Document ID to decompress
202
+ * @returns Decompressed PDF data
203
+ */
204
+ async pdfDecompress(id) {
205
+ const response = (await this.send({ type: "pdfDecompress", id }));
206
+ return response.bytes;
207
+ }
150
208
  /**
151
209
  * Get the raw PDF bytes of a document.
152
210
  */
@@ -154,10 +212,230 @@ export class WorkerClient {
154
212
  const response = (await this.send({ type: "getBytes", id }));
155
213
  return response.bytes;
156
214
  }
215
+ // ===========================================================================
216
+ // Render Management Methods
217
+ // ===========================================================================
218
+ /**
219
+ * Request a render. Returns cached result if available,
220
+ * otherwise queues the request.
221
+ */
222
+ requestRender(req) {
223
+ const key = makeRenderKey(req.docId, req.page, req.type, req.scale);
224
+ // Check cache first
225
+ const cached = this.renderCache.get(key);
226
+ if (cached) {
227
+ cached.lastAccess = Date.now();
228
+ return Promise.resolve(cached.result);
229
+ }
230
+ // Check if already in-flight
231
+ const existing = this.renderInFlight.get(key);
232
+ if (existing) {
233
+ return existing;
234
+ }
235
+ // Queue the request
236
+ return new Promise((resolve, reject) => {
237
+ const queuedReq = {
238
+ ...req,
239
+ priority: getBasePriority(req.type),
240
+ resolve,
241
+ reject
242
+ };
243
+ // Insert sorted by priority (highest first)
244
+ const insertIndex = this.renderQueue.findIndex(q => q.priority < queuedReq.priority);
245
+ if (insertIndex === -1) {
246
+ this.renderQueue.push(queuedReq);
247
+ }
248
+ else {
249
+ this.renderQueue.splice(insertIndex, 0, queuedReq);
250
+ }
251
+ this.processRenderQueue();
252
+ });
253
+ }
254
+ /**
255
+ * Get a cached result without queuing a render.
256
+ */
257
+ getCachedRender(docId, page, type, scale) {
258
+ const key = makeRenderKey(docId, page, type, scale);
259
+ const cached = this.renderCache.get(key);
260
+ if (cached) {
261
+ cached.lastAccess = Date.now();
262
+ return cached.result;
263
+ }
264
+ return null;
265
+ }
266
+ /**
267
+ * Cancel pending render requests matching criteria.
268
+ * Does not cancel in-flight requests.
269
+ */
270
+ cancelRenders(docId, page, type) {
271
+ this.renderQueue = this.renderQueue.filter(req => {
272
+ const match = (docId === undefined || req.docId === docId) &&
273
+ (page === undefined || req.page === page) &&
274
+ (type === undefined || req.type === type);
275
+ if (match) {
276
+ req.reject(new Error("Request cancelled"));
277
+ }
278
+ return !match;
279
+ });
280
+ }
281
+ /**
282
+ * Invalidate cache entries. Call when document or zoom changes.
283
+ */
284
+ invalidateRenderCache(docId) {
285
+ if (docId === undefined) {
286
+ // Clear all
287
+ for (const entry of this.renderCache.values()) {
288
+ entry.result.bitmap.close();
289
+ }
290
+ this.renderCache.clear();
291
+ }
292
+ else {
293
+ // Clear for specific doc
294
+ for (const [key, entry] of this.renderCache) {
295
+ if (key.startsWith(docId + ":")) {
296
+ entry.result.bitmap.close();
297
+ this.renderCache.delete(key);
298
+ }
299
+ }
300
+ }
301
+ }
302
+ /**
303
+ * Boost priority for the target page and nearby pages.
304
+ * Target page gets highest priority, nearby pages get slightly lower.
305
+ */
306
+ boostRenderPriority(docId, page) {
307
+ if (this.renderQueue.length === 0)
308
+ return;
309
+ // Find highest priority in queue
310
+ let maxPriority = 0;
311
+ for (const req of this.renderQueue) {
312
+ if (req.priority > maxPriority) {
313
+ maxPriority = req.priority;
314
+ }
315
+ }
316
+ const boostBase = maxPriority + 10;
317
+ // Boost matching pages within a wider distance to cover more nearby renders.
318
+ for (const req of this.renderQueue) {
319
+ if (req.docId === docId) {
320
+ const distance = Math.abs(req.page - page);
321
+ if (distance <= 4) {
322
+ req.priority = boostBase - distance;
323
+ }
324
+ }
325
+ }
326
+ // Re-sort queue by new priorities
327
+ this.renderQueue.sort((a, b) => b.priority - a.priority);
328
+ }
329
+ /**
330
+ * Clean up render resources.
331
+ */
332
+ destroyRenderResources() {
333
+ // Cancel all pending
334
+ for (const req of this.renderQueue) {
335
+ req.reject(new Error("WorkerClient destroyed"));
336
+ }
337
+ this.renderQueue = [];
338
+ // Close all cached bitmaps
339
+ for (const entry of this.renderCache.values()) {
340
+ entry.result.bitmap.close();
341
+ }
342
+ this.renderCache.clear();
343
+ }
344
+ async processRenderQueue() {
345
+ while (this.activeRenderCount < this.maxConcurrent && this.renderQueue.length > 0) {
346
+ const req = this.renderQueue.shift();
347
+ if (!req)
348
+ break;
349
+ const key = makeRenderKey(req.docId, req.page, req.type, req.scale);
350
+ // Double-check cache (might have been filled while queued)
351
+ const cached = this.renderCache.get(key);
352
+ if (cached) {
353
+ cached.lastAccess = Date.now();
354
+ req.resolve(cached.result);
355
+ continue;
356
+ }
357
+ // Check if in-flight (might have been started by another request)
358
+ const existing = this.renderInFlight.get(key);
359
+ if (existing) {
360
+ existing.then(req.resolve, req.reject);
361
+ continue;
362
+ }
363
+ // Start the render
364
+ this.activeRenderCount++;
365
+ const promise = this.doRender(req, key);
366
+ this.renderInFlight.set(key, promise);
367
+ promise.finally(() => {
368
+ this.activeRenderCount--;
369
+ this.renderInFlight.delete(key);
370
+ this.processRenderQueue();
371
+ });
372
+ }
373
+ }
374
+ async doRender(req, key) {
375
+ try {
376
+ const pageIndex = req.page - 1;
377
+ const pageInfo = await this.getPageInfo(req.docId, pageIndex);
378
+ const width = Math.round(pageInfo.width * req.scale);
379
+ const height = Math.round(pageInfo.height * req.scale);
380
+ // Send render request directly to worker
381
+ const rendered = (await this.send({
382
+ type: "renderPage",
383
+ id: req.docId,
384
+ pageIndex,
385
+ width,
386
+ height,
387
+ }));
388
+ const buffer = new ArrayBuffer(rendered.rgba.byteLength);
389
+ new Uint8Array(buffer).set(rendered.rgba);
390
+ const imageData = new ImageData(new Uint8ClampedArray(buffer), rendered.width, rendered.height);
391
+ const bitmap = await createImageBitmap(imageData);
392
+ const result = {
393
+ bitmap,
394
+ width: bitmap.width,
395
+ height: bitmap.height
396
+ };
397
+ // Add to cache
398
+ this.addToRenderCache(key, result);
399
+ req.resolve(result);
400
+ return result;
401
+ }
402
+ catch (error) {
403
+ req.reject(error instanceof Error ? error : new Error(String(error)));
404
+ throw error;
405
+ }
406
+ }
407
+ addToRenderCache(key, result) {
408
+ // Evict if at capacity
409
+ while (this.renderCache.size >= this.maxCacheSize) {
410
+ this.evictLRU();
411
+ }
412
+ this.renderCache.set(key, {
413
+ result,
414
+ lastAccess: Date.now()
415
+ });
416
+ }
417
+ evictLRU() {
418
+ let oldest = null;
419
+ let oldestTime = Infinity;
420
+ for (const [key, entry] of this.renderCache) {
421
+ if (entry.lastAccess < oldestTime) {
422
+ oldestTime = entry.lastAccess;
423
+ oldest = key;
424
+ }
425
+ }
426
+ if (oldest) {
427
+ const entry = this.renderCache.get(oldest);
428
+ if (entry) {
429
+ entry.result.bitmap.close();
430
+ }
431
+ this.renderCache.delete(oldest);
432
+ }
433
+ }
157
434
  /**
158
435
  * Terminate the worker.
159
436
  */
160
437
  terminate() {
438
+ this.destroyRenderResources();
161
439
  this.worker.terminate();
162
440
  for (const { reject } of this.pending.values()) {
163
441
  reject(new Error("Worker terminated"));
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerClient.js","sourceRoot":"","sources":["../../../src/worker/WorkerClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkerClient.js","sourceRoot":"","sources":["../../../src/worker/WorkerClient.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  export { WorkerClient } from "./WorkerClient.js";
2
- export type { PageInfo, RenderedPage, LicenseResult, Composition, ComposePick } from "./WorkerClient.js";
2
+ export type { PageInfo, LicenseResult, Composition, ComposePick, ExtractedFont, ExtractedImage, OutlineSection, SplitByOutlineResult, RenderType, RenderRequest, RenderResult, } from "./WorkerClient.js";
3
3
  export type { WorkerRequest, WorkerResponse } from "./worker.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACzG,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}