@qianxiang-ai/fu-report-image-export-engine 1.1.8 → 1.1.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,YAAY,CAAA;AAGnB,OAAO,KAAK,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAEnG,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAAA;IACtD,SAAS,IAAI,IAAI,CAAA;IACjB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,2BAA2B,CAAC,KAAK,IAAI,GAAG,IAAI,CAAA;IAC7G,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAA;CAC7E;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAA;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,uBAAuB,CAAA;IACtD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CACrC;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,0BAA0B,EACnC,YAAY,GAAE,+BAAoC,GACjD,OAAO,CAAC,yBAAyB,CAAC,CA2HpC;AAED,wBAAgB,yBAAyB,CAAC,cAAc,SAAgB,GAAG,uBAAuB,CAOjG"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,YAAY,CAAA;AAGnB,OAAO,KAAK,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAEnG,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAAA;IACtD,SAAS,IAAI,IAAI,CAAA;IACjB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,2BAA2B,CAAC,KAAK,IAAI,GAAG,IAAI,CAAA;IAC7G,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAA;CAC7E;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAA;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,uBAAuB,CAAA;IACtD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CACrC;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,0BAA0B,EACnC,YAAY,GAAE,+BAAoC,GACjD,OAAO,CAAC,yBAAyB,CAAC,CAsJpC;AAED,wBAAgB,yBAAyB,CAAC,cAAc,SAAgB,GAAG,uBAAuB,CAOjG"}
@@ -1,13 +1,13 @@
1
- import { FuReportImageExportError } from './types.js';
1
+ import { FuReportImageExportError, assertFuReportImageContentSupported } from './types.js';
2
2
  import { FU_REPORT_IMAGE_WASM_SHA256, FU_REPORT_IMAGE_WORKER_PROTOCOL } from './wasm-kernel.js';
3
3
  export async function exportFuReportImage(snapshot, options, dependencies = {}) {
4
4
  if (options.runtimeBuildId !== options.clientBuildId) {
5
5
  throw new FuReportImageExportError('EXPORT_BUILD_MISMATCH', 'runtime-config 与当前页面 buildId 不一致');
6
6
  }
7
- const target = dependencies.target ?? await selectFuReportOutputTarget(options.filename ?? safeFilename(snapshot.title, options.format), options.format, dependencies.blobLimitBytes, dependencies.forceBlobFallback);
8
- throwIfCancelled(options.signal);
9
- const worker = dependencies.workerFactory?.() ?? createFuReportImageWorker(options.clientBuildId);
7
+ assertFuReportImageContentSupported(snapshot);
8
+ const target = dependencies.target ?? await selectFuReportOutputTarget(options.filename ?? defaultFilename(options.format), options.format, dependencies.blobLimitBytes, dependencies.forceBlobFallback);
10
9
  return new Promise((resolve, reject) => {
10
+ let worker;
11
11
  let settled = false;
12
12
  let writing = Promise.resolve();
13
13
  let started = false;
@@ -15,97 +15,131 @@ export async function exportFuReportImage(snapshot, options, dependencies = {})
15
15
  const startupTimeout = setTimeout(() => {
16
16
  void fail(new FuReportImageExportError('EXPORT_WORKER_CRASH', '图片导出 Worker 启动超时'));
17
17
  }, 10_000);
18
- const cancel = () => worker.postMessage({ type: 'cancel', reason: 'EXPORT_CANCELLED' });
19
- options.signal?.addEventListener('abort', cancel, { once: true });
18
+ const cancel = () => void fail(new FuReportImageExportError('EXPORT_CANCELLED', '图片导出已取消'));
20
19
  const cleanup = () => {
21
20
  clearTimeout(startupTimeout);
22
21
  if (responseTimeout)
23
22
  clearTimeout(responseTimeout);
24
23
  options.signal?.removeEventListener('abort', cancel);
25
- worker.terminate();
24
+ worker?.terminate();
26
25
  };
27
26
  const fail = async (error) => {
28
27
  if (settled)
29
28
  return;
30
29
  settled = true;
31
- worker.postMessage({ type: 'cancel', reason: error.code });
30
+ try {
31
+ worker?.postMessage({ type: 'cancel', reason: error.code });
32
+ }
33
+ catch {
34
+ // Worker 可能已经失效,仍须终止线程并中止文件流。
35
+ }
36
+ cleanup();
32
37
  try {
33
38
  await writing.catch(() => undefined);
34
39
  await target.abort(error);
35
40
  }
36
41
  catch (cleanupError) {
37
- cleanup();
38
42
  reject(new FuReportImageExportError('EXPORT_PARTIAL_FILE_CLEANUP_FAILED', '图片导出失败,且未能确认临时文件已清理', { cause: cleanupError }));
39
43
  return;
40
44
  }
41
- cleanup();
42
45
  reject(error);
43
46
  };
44
- worker.addEventListener('error', event => {
45
- void fail(new FuReportImageExportError('EXPORT_WORKER_CRASH', event.message || '图片导出 Worker 崩溃'));
46
- });
47
- worker.addEventListener('message', event => {
48
- const message = event.data;
49
- if (started)
50
- armResponseTimeout();
51
- if (message.type === 'ready') {
52
- if (started)
53
- return;
54
- if (message.protocol !== FU_REPORT_IMAGE_WORKER_PROTOCOL
55
- || (message.workerBuildId !== options.clientBuildId && message.workerBuildId !== 'development')
56
- || message.wasmSha256 !== FU_REPORT_IMAGE_WASM_SHA256) {
57
- void fail(new FuReportImageExportError('EXPORT_BUILD_MISMATCH', '图片导出 Worker 版本握手失败'));
47
+ try {
48
+ throwIfCancelled(options.signal);
49
+ const activeWorker = worker = dependencies.workerFactory?.() ?? createFuReportImageWorker(options.clientBuildId);
50
+ options.signal?.addEventListener('abort', cancel, { once: true });
51
+ activeWorker.addEventListener('error', event => {
52
+ void fail(new FuReportImageExportError('EXPORT_WORKER_CRASH', event.message || '图片导出 Worker 崩溃'));
53
+ });
54
+ activeWorker.addEventListener('message', event => {
55
+ if (settled)
58
56
  return;
59
- }
60
- started = true;
61
- clearTimeout(startupTimeout);
62
- armResponseTimeout();
63
- const { signal: _signal, ...workerOptions } = options;
64
- worker.postMessage({
65
- type: 'start',
66
- protocol: FU_REPORT_IMAGE_WORKER_PROTOCOL,
67
- snapshot,
68
- options: workerOptions,
69
- wasmSha256: FU_REPORT_IMAGE_WASM_SHA256
70
- });
71
- return;
72
- }
73
- if (message.type === 'chunk') {
74
- writing = writing.then(async () => {
57
+ const message = event.data;
58
+ if (started)
59
+ armResponseTimeout();
60
+ if (message.type === 'ready') {
61
+ if (started)
62
+ return;
63
+ if (message.protocol !== FU_REPORT_IMAGE_WORKER_PROTOCOL
64
+ || (message.workerBuildId !== options.clientBuildId && message.workerBuildId !== 'development')
65
+ || message.wasmSha256 !== FU_REPORT_IMAGE_WASM_SHA256) {
66
+ void fail(new FuReportImageExportError('EXPORT_BUILD_MISMATCH', '图片导出 Worker 版本握手失败'));
67
+ return;
68
+ }
69
+ started = true;
70
+ clearTimeout(startupTimeout);
71
+ armResponseTimeout();
72
+ const { signal: _signal, ...workerOptions } = options;
75
73
  try {
76
- await target.write(new Uint8Array(message.bytes));
77
- worker.postMessage({ type: 'write-ack', chunkId: message.chunkId });
74
+ activeWorker.postMessage({
75
+ type: 'start',
76
+ protocol: FU_REPORT_IMAGE_WORKER_PROTOCOL,
77
+ snapshot,
78
+ options: workerOptions,
79
+ wasmSha256: FU_REPORT_IMAGE_WASM_SHA256
80
+ });
78
81
  }
79
82
  catch (error) {
80
- worker.postMessage({
81
- type: 'write-ack', chunkId: message.chunkId,
82
- error: error instanceof Error ? error.message : '文件写入失败'
83
- });
84
- throw error;
83
+ void fail(workerStartupError(error));
85
84
  }
86
- }).catch(error => {
87
- void fail(new FuReportImageExportError('EXPORT_WRITE_FAILED', error instanceof Error ? error.message : '图片文件写入失败', { cause: error }));
88
- });
89
- return;
90
- }
91
- if (message.type === 'error') {
92
- void fail(new FuReportImageExportError(message.code, message.message));
93
- return;
94
- }
95
- if (message.type === 'done') {
96
- writing = writing.then(async () => {
97
- if (settled)
98
- return;
99
- await target.close();
100
- settled = true;
101
- cleanup();
102
- resolve({ ...message.result, usedFileSystemAccess: target.usesFileSystemAccess });
103
- }).catch(error => void fail(new FuReportImageExportError('EXPORT_WRITE_FAILED', error instanceof Error ? error.message : '图片文件提交失败', { cause: error })));
104
- }
105
- });
106
- function armResponseTimeout() {
85
+ return;
86
+ }
87
+ if (message.type === 'chunk') {
88
+ clearResponseTimeout();
89
+ writing = writing.then(async () => {
90
+ if (settled)
91
+ return;
92
+ try {
93
+ await target.write(new Uint8Array(message.bytes));
94
+ if (settled)
95
+ return;
96
+ armResponseTimeout();
97
+ activeWorker.postMessage({ type: 'write-ack', chunkId: message.chunkId });
98
+ }
99
+ catch (error) {
100
+ activeWorker.postMessage({
101
+ type: 'write-ack', chunkId: message.chunkId,
102
+ error: error instanceof Error ? error.message : '文件写入失败'
103
+ });
104
+ throw error;
105
+ }
106
+ }).catch(error => {
107
+ void fail(new FuReportImageExportError('EXPORT_WRITE_FAILED', error instanceof Error ? error.message : '图片文件写入失败', { cause: error }));
108
+ });
109
+ return;
110
+ }
111
+ if (message.type === 'error') {
112
+ void fail(new FuReportImageExportError(message.code, message.message));
113
+ return;
114
+ }
115
+ if (message.type === 'done') {
116
+ clearResponseTimeout();
117
+ writing = writing.then(async () => {
118
+ if (settled)
119
+ return;
120
+ await target.close();
121
+ if (settled)
122
+ return;
123
+ settled = true;
124
+ cleanup();
125
+ resolve({ ...message.result, usedFileSystemAccess: target.usesFileSystemAccess });
126
+ }).catch(error => void fail(new FuReportImageExportError('EXPORT_WRITE_FAILED', error instanceof Error ? error.message : '图片文件提交失败', { cause: error })));
127
+ }
128
+ });
129
+ // 覆盖创建 Worker 期间已发生的取消。
130
+ if (options.signal?.aborted)
131
+ cancel();
132
+ }
133
+ catch (error) {
134
+ void fail(workerStartupError(error));
135
+ }
136
+ function clearResponseTimeout() {
107
137
  if (responseTimeout)
108
138
  clearTimeout(responseTimeout);
139
+ responseTimeout = undefined;
140
+ }
141
+ function armResponseTimeout() {
142
+ clearResponseTimeout();
109
143
  responseTimeout = setTimeout(() => {
110
144
  void fail(new FuReportImageExportError('EXPORT_WORKER_CRASH', '图片导出 Worker 响应超时'));
111
145
  }, 30_000);
@@ -193,12 +227,14 @@ class BlobDownloadTarget {
193
227
  }
194
228
  async abort() { this.chunks.length = 0; this.bytes = 0; }
195
229
  }
196
- function safeFilename(title, format) {
197
- const stem = title.replace(/[<>:"/\\|?*\u0000-\u001f]/g, '_').trim().slice(0, 120) || 'fu-report';
198
- return `${stem}.${format === 'png' ? 'png' : 'jpg'}`;
230
+ function defaultFilename(format) {
231
+ return `fu-report-export.${format === 'png' ? 'png' : 'jpg'}`;
199
232
  }
200
233
  function throwIfCancelled(signal) {
201
234
  if (signal?.aborted)
202
235
  throw new FuReportImageExportError('EXPORT_CANCELLED', '图片导出已取消');
203
236
  }
237
+ function workerStartupError(error) {
238
+ return error instanceof FuReportImageExportError ? error : new FuReportImageExportError('EXPORT_WORKER_CRASH', error instanceof Error ? error.message : '图片导出 Worker 启动失败', { cause: error });
239
+ }
204
240
  //# sourceMappingURL=controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface FuReportImageDimensions {
2
+ readonly width: number;
3
+ readonly height: number;
4
+ }
5
+ /** 仅读取容器头部,不调用图片解码器;每次读取最多 32 字节。 */
6
+ export declare function readFuReportImageDimensions(blob: Blob): Promise<FuReportImageDimensions>;
7
+ //# sourceMappingURL=image-dimensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-dimensions.d.ts","sourceRoot":"","sources":["../src/image-dimensions.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,uBAAuB;IAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAE5F,qCAAqC;AACrC,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA0I9F"}
@@ -0,0 +1,175 @@
1
+ import { FuReportImageExportError } from './types.js';
2
+ /** 仅读取容器头部,不调用图片解码器;每次读取最多 32 字节。 */
3
+ export async function readFuReportImageDimensions(blob) {
4
+ let reads = 0;
5
+ const read = async (offset, length) => {
6
+ if (++reads > 4096 || !Number.isSafeInteger(offset) || offset < 0 || length > 32
7
+ || offset + length > blob.size)
8
+ throw invalidImage();
9
+ return new DataView(await blob.slice(offset, offset + length).arrayBuffer());
10
+ };
11
+ const text = (view, offset, count) => String.fromCharCode(...Array.from({ length: count }, (_, index) => view.getUint8(offset + index)));
12
+ const dimensions = (width, height) => {
13
+ if (!Number.isSafeInteger(width) || !Number.isSafeInteger(height) || width <= 0 || height <= 0
14
+ || !Number.isSafeInteger(width * height * 4))
15
+ throw invalidImage();
16
+ return { width, height };
17
+ };
18
+ try {
19
+ const head = await read(0, Math.min(32, blob.size));
20
+ if (head.byteLength >= 24 && head.getUint32(0) === 0x89504e47
21
+ && head.getUint32(4) === 0x0d0a1a0a && text(head, 12, 4) === 'IHDR') {
22
+ return dimensions(head.getUint32(16), head.getUint32(20));
23
+ }
24
+ if (head.byteLength >= 10 && ['GIF87a', 'GIF89a'].includes(text(head, 0, 6))) {
25
+ const screen = dimensions(head.getUint16(6, true), head.getUint16(8, true));
26
+ const packed = (await read(10, 3)).getUint8(0);
27
+ let offset = 13 + ((packed & 0x80) ? 3 * (1 << ((packed & 7) + 1)) : 0);
28
+ // 浏览器解码首帧时可能按图像描述符扩展画布,逻辑屏幕尺寸不能单独作为预算。
29
+ while (offset < blob.size) {
30
+ const kind = (await read(offset, 1)).getUint8(0);
31
+ if (kind === 0x2c) {
32
+ const frame = await read(offset + 1, 9);
33
+ const size = dimensions(frame.getUint16(4, true), frame.getUint16(6, true));
34
+ return dimensions(Math.max(screen.width, frame.getUint16(0, true) + size.width), Math.max(screen.height, frame.getUint16(2, true) + size.height));
35
+ }
36
+ if (kind !== 0x21)
37
+ throw invalidImage();
38
+ // 扩展块由标签和若干有长度前缀的数据子块组成,以零长度终止。
39
+ await read(offset + 1, 1);
40
+ offset += 2;
41
+ for (;;) {
42
+ const length = (await read(offset++, 1)).getUint8(0);
43
+ if (!length)
44
+ break;
45
+ offset += length;
46
+ if (offset >= blob.size)
47
+ throw invalidImage();
48
+ }
49
+ }
50
+ throw invalidImage();
51
+ }
52
+ if (head.byteLength >= 2 && head.getUint16(0) === 0xffd8) {
53
+ let offset = 2;
54
+ while (offset < blob.size) {
55
+ const marker = await read(offset, 2);
56
+ if (marker.getUint8(0) !== 0xff)
57
+ throw invalidImage();
58
+ const code = marker.getUint8(1);
59
+ if (code === 0xff) {
60
+ offset++;
61
+ continue;
62
+ }
63
+ if (code === 0xda || code === 0xd9)
64
+ throw invalidImage();
65
+ if (code === 0x01 || (code >= 0xd0 && code <= 0xd8)) {
66
+ offset += 2;
67
+ continue;
68
+ }
69
+ const length = (await read(offset + 2, 2)).getUint16(0);
70
+ if (length < 2 || offset + 2 + length > blob.size)
71
+ throw invalidImage();
72
+ if ([0xc0, 0xc1, 0xc2, 0xc3, 0xc5, 0xc6, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf].includes(code)) {
73
+ if (length < 8)
74
+ throw invalidImage();
75
+ const frame = await read(offset + 2, 7);
76
+ return dimensions(frame.getUint16(5), frame.getUint16(3));
77
+ }
78
+ offset += 2 + length;
79
+ }
80
+ }
81
+ if (head.byteLength >= 12 && text(head, 0, 4) === 'RIFF' && text(head, 8, 4) === 'WEBP') {
82
+ let offset = 12;
83
+ while (offset + 8 <= blob.size) {
84
+ const chunk = await read(offset, 8);
85
+ const kind = text(chunk, 0, 4), length = chunk.getUint32(4, true);
86
+ if (offset + 8 + length > blob.size)
87
+ throw invalidImage();
88
+ const data = await read(offset + 8, Math.min(length, 10));
89
+ const uint24 = (at) => data.getUint8(at) + data.getUint8(at + 1) * 256 + data.getUint8(at + 2) * 65536;
90
+ if (kind === 'VP8X')
91
+ return dimensions(uint24(4) + 1, uint24(7) + 1);
92
+ if (kind === 'VP8L' && data.getUint8(0) === 0x2f) {
93
+ const bits = data.getUint32(1, true);
94
+ return dimensions((bits & 0x3fff) + 1, ((bits >>> 14) & 0x3fff) + 1);
95
+ }
96
+ if (kind === 'VP8 ' && uint24(3) === 0x2a019d) {
97
+ return dimensions(data.getUint16(6, true) & 0x3fff, data.getUint16(8, true) & 0x3fff);
98
+ }
99
+ offset += 8 + length + (length % 2);
100
+ }
101
+ }
102
+ if (head.byteLength >= 26 && text(head, 0, 2) === 'BM') {
103
+ return head.getUint32(14, true) === 12
104
+ ? dimensions(head.getUint16(18, true), head.getUint16(20, true))
105
+ : dimensions(head.getInt32(18, true), Math.abs(head.getInt32(22, true)));
106
+ }
107
+ if (head.byteLength >= 6 && head.getUint16(0) === 0 && [1, 2].includes(head.getUint16(2, true))) {
108
+ const count = head.getUint16(4, true);
109
+ if (!count || 6 + count * 16 > blob.size)
110
+ throw invalidImage();
111
+ let largest = dimensions(1, 1);
112
+ for (let index = 0; index < count; index++) {
113
+ const entry = await read(6 + index * 16, 16);
114
+ let size = dimensions(entry.getUint8(0) || 256, entry.getUint8(1) || 256);
115
+ const offset = entry.getUint32(12, true), length = entry.getUint32(8, true);
116
+ if (offset < 6 + count * 16 || offset + length > blob.size || length < 24)
117
+ throw invalidImage();
118
+ const data = await read(offset, 24);
119
+ if (data.getUint32(0) === 0x89504e47 && text(data, 12, 4) === 'IHDR') {
120
+ size = dimensions(data.getUint32(16), data.getUint32(20));
121
+ }
122
+ else if (data.getUint32(0, true) >= 40) {
123
+ size = dimensions(data.getInt32(4, true), Math.abs(data.getInt32(8, true)) / 2);
124
+ }
125
+ if (size.width * size.height > largest.width * largest.height)
126
+ largest = size;
127
+ }
128
+ return largest;
129
+ }
130
+ // AVIF/HEIF 的尺寸位于 meta/iprp/ipco/ispe,跳过压缩数据盒,禁止任意字节搜索。
131
+ if (head.byteLength >= 8 && text(head, 4, 4) === 'ftyp') {
132
+ let largest;
133
+ const boxes = async (start, end, depth) => {
134
+ if (depth > 4)
135
+ throw invalidImage();
136
+ for (let offset = start; offset + 8 <= end;) {
137
+ const box = await read(offset, 8);
138
+ let length = box.getUint32(0), header = 8;
139
+ if (length === 1) {
140
+ length = Number((await read(offset + 8, 8)).getBigUint64(0));
141
+ header = 16;
142
+ }
143
+ else if (length === 0)
144
+ length = end - offset;
145
+ if (!Number.isSafeInteger(length) || length < header || offset + length > end)
146
+ throw invalidImage();
147
+ const kind = text(box, 4, 4), body = offset + header;
148
+ if (kind === 'ispe' && depth === 3 && length >= header + 12) {
149
+ const data = await read(body, 12);
150
+ const size = dimensions(data.getUint32(4), data.getUint32(8));
151
+ if (!largest || size.width * size.height > largest.width * largest.height)
152
+ largest = size;
153
+ }
154
+ else if ((depth === 0 && kind === 'meta') || (depth === 1 && kind === 'iprp') || (depth === 2 && kind === 'ipco')) {
155
+ await boxes(body + (kind === 'meta' ? 4 : 0), offset + length, depth + 1);
156
+ }
157
+ offset += length;
158
+ }
159
+ };
160
+ await boxes(0, blob.size, 0);
161
+ if (largest)
162
+ return largest;
163
+ }
164
+ throw invalidImage();
165
+ }
166
+ catch (error) {
167
+ if (error instanceof FuReportImageExportError)
168
+ throw error;
169
+ throw invalidImage();
170
+ }
171
+ }
172
+ function invalidImage() {
173
+ return new FuReportImageExportError('EXPORT_UNSUPPORTED', '图片格式或尺寸元数据无效,无法安全预留解码预算');
174
+ }
175
+ //# sourceMappingURL=image-dimensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-dimensions.js","sourceRoot":"","sources":["../src/image-dimensions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory-budget.d.ts","sourceRoot":"","sources":["../src/memory-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAGxD,MAAM,MAAM,kBAAkB,GAC1B,kBAAkB,GAClB,kBAAkB,GAClB,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,CAAA;AAErB,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CACjC;AAED,eAAO,MAAM,sCAAsC,EAAE,0BAenD,CAAA;AAEF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAA;IAC9D,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAA;CAC5D;AAED,qBAAa,0BAA0B;IACrC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAA;IAC3C,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;gBAEvB,MAAM,GAAE,0BAAmE;IAIvF,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAsBxD,OAAO,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI;IAmB7D,QAAQ,IAAI,4BAA4B;IAIxC,KAAK,IAAI,IAAI;CAId"}
1
+ {"version":3,"file":"memory-budget.d.ts","sourceRoot":"","sources":["../src/memory-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAGxD,MAAM,MAAM,kBAAkB,GAC1B,kBAAkB,GAClB,kBAAkB,GAClB,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,CAAA;AAErB,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CACjC;AAED,eAAO,MAAM,sCAAsC,EAAE,0BAenD,CAAA;AAEF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAA;IAC9D,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAA;CAC5D;AAED,qBAAa,0BAA0B;IACrC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAA;IAC3C,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;gBAEvB,MAAM,GAAE,0BAAmE;IAIvF,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAuBxD,OAAO,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI;IAmB7D,QAAQ,IAAI,4BAA4B;IAIxC,KAAK,IAAI,IAAI;CAId"}
@@ -1,4 +1,4 @@
1
- import { FuReportImageExportError } from './types.js';
1
+ import { FuReportImageExportError, assertFuReportImageContentSupported } from './types.js';
2
2
  export const DEFAULT_FU_REPORT_EXPORT_MEMORY_LIMITS = Object.freeze({
3
3
  maximumArea: 400_000_000,
4
4
  maximumEdge: 32_767,
@@ -24,6 +24,7 @@ export class FuReportExportMemoryBudget {
24
24
  this.limits = limits;
25
25
  }
26
26
  validateSnapshot(snapshot) {
27
+ assertFuReportImageContentSupported(snapshot);
27
28
  if (snapshot.width > this.limits.maximumEdge || snapshot.height > this.limits.maximumEdge) {
28
29
  throw new FuReportImageExportError('EXPORT_EDGE_LIMIT', '图片边长超过浏览器导出上限');
29
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memory-budget.js","sourceRoot":"","sources":["../src/memory-budget.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AA0BrD,MAAM,CAAC,MAAM,sCAAsC,GAA+B,MAAM,CAAC,MAAM,CAAC;IAC9F,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,MAAM;IACnB,oBAAoB,EAAE,WAAW;IACjC,aAAa,EAAE,GAAG;IAClB,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE,MAAM;IACrB,iBAAiB,EAAE,SAAS;IAC5B,aAAa,EAAE,UAAU;IACzB,YAAY,EAAE,SAAS;IACvB,gBAAgB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAClC,gBAAgB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAClC,eAAe,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IAChC,cAAc,EAAE,CAAC;IACjB,eAAe,EAAE,UAAU;CAC5B,CAAC,CAAA;AAQF,MAAM,OAAO,0BAA0B;IAC5B,MAAM,CAA4B;IACnC,MAAM,GAAG,KAAK,CAAA;IACL,OAAO,GAAG,SAAS,EAAE,CAAA;IACrB,IAAI,GAAG,SAAS,EAAE,CAAA;IAEnC,YAAY,SAAqC,sCAAsC;QACrF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,gBAAgB,CAAC,QAAgC;QAC/C,IAAI,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC1F,MAAM,IAAI,wBAAwB,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAA;QAC1E,CAAC;QACD,IAAI,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC/D,MAAM,IAAI,wBAAwB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAA;QAC1E,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAA;QAClC,MAAM,MAAM,GAAgC;YAC1C,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;YAC1D,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC5C,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC1C,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC5C,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACpD,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC5C,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;SAC3C,CAAA;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,wBAAwB,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,CAAA;QACjF,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAwB,EAAE,MAAc;QAC9C,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,wBAAwB,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAA;QACpF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,wBAAwB,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAA;QAC5E,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;QACxC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,wBAAwB,CAAC,wBAAwB,EAAE,QAAQ,IAAI,OAAO,CAAC,CAAA;QACnF,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;QACjD,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,OAAO,GAAG,EAAE;YACV,IAAI,QAAQ;gBAAE,OAAM;YACpB,QAAQ,GAAG,IAAI,CAAA;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;QAC/D,CAAC,CAAA;IACH,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAA;IACtF,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAyB;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9F,CAAC;CACF;AAED,SAAS,SAAS;IAChB,OAAO;QACL,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,CAAC;QAClB,cAAc,EAAE,CAAC;QACjB,eAAe,EAAE,CAAC;KACnB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"memory-budget.js","sourceRoot":"","sources":["../src/memory-budget.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export declare class FuReportStripResourceLru<T extends FuReportClosableResource
8
8
  constructor(maximumBytes: number);
9
9
  get(key: string): T | undefined;
10
10
  set(key: string, value: T, bytes: number): void;
11
+ makeRoom(bytes: number): boolean;
11
12
  clear(): void;
12
13
  get size(): number;
13
14
  get byteLength(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"resource-lru.d.ts","sourceRoot":"","sources":["../src/resource-lru.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,KAAK,IAAI,IAAI,CAAA;CACd;AAOD,qBAAa,wBAAwB,CAAC,CAAC,SAAS,wBAAwB;IAI1D,OAAO,CAAC,QAAQ,CAAC,YAAY;IAHzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,KAAK,CAAI;gBAEY,YAAY,EAAE,MAAM;IAEjD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAQ/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAgB/C,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI,MAAM,CAA6B;IAC/C,IAAI,UAAU,IAAI,MAAM,CAAsB;IAE9C,OAAO,CAAC,WAAW;CAOpB"}
1
+ {"version":3,"file":"resource-lru.d.ts","sourceRoot":"","sources":["../src/resource-lru.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,KAAK,IAAI,IAAI,CAAA;CACd;AAOD,qBAAa,wBAAwB,CAAC,CAAC,SAAS,wBAAwB;IAI1D,OAAO,CAAC,QAAQ,CAAC,YAAY;IAHzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,KAAK,CAAI;gBAEY,YAAY,EAAE,MAAM;IAEjD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAQ/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAiB/C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAMhC,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI,MAAM,CAA6B;IAC/C,IAAI,UAAU,IAAI,MAAM,CAAsB;IAE9C,OAAO,CAAC,WAAW;CAOpB"}
@@ -29,6 +29,14 @@ export class FuReportStripResourceLru {
29
29
  while (this.bytes > this.maximumBytes)
30
30
  this.evictOldest();
31
31
  }
32
+ // 在申请新资源预算前释放旧缓存,避免预算检查阻断淘汰。
33
+ makeRoom(bytes) {
34
+ if (!Number.isSafeInteger(bytes) || bytes < 0 || bytes > this.maximumBytes)
35
+ return false;
36
+ while (this.bytes + bytes > this.maximumBytes)
37
+ this.evictOldest();
38
+ return true;
39
+ }
32
40
  clear() {
33
41
  for (const entry of this.entries.values())
34
42
  entry.value.close();
@@ -1 +1 @@
1
- {"version":3,"file":"resource-lru.js","sourceRoot":"","sources":["../src/resource-lru.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,wBAAwB;IAIN;IAHZ,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAA;IAC9C,KAAK,GAAG,CAAC,CAAA;IAEjB,YAA6B,YAAoB;QAApB,iBAAY,GAAZ,YAAY,CAAQ;IAAG,CAAC;IAErD,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAA;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC5B,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ,EAAE,KAAa;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;YACtB,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAA;YAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC1B,CAAC;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9B,KAAK,CAAC,KAAK,EAAE,CAAA;YACb,OAAM;QACR,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAA;QACnB,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3D,CAAC;IAED,KAAK;QACH,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAC9D,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,IAAI,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA,CAAC,CAAC;IAC/C,IAAI,UAAU,KAAa,OAAO,IAAI,CAAC,KAAK,CAAA,CAAC,CAAC;IAEtC,WAAW;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAuC,CAAA;QACnF,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"resource-lru.js","sourceRoot":"","sources":["../src/resource-lru.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,wBAAwB;IAIN;IAHZ,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAA;IAC9C,KAAK,GAAG,CAAC,CAAA;IAEjB,YAA6B,YAAoB;QAApB,iBAAY,GAAZ,YAAY,CAAQ;IAAG,CAAC;IAErD,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAA;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC5B,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ,EAAE,KAAa;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;YACtB,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAA;YAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC1B,CAAC;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9B,KAAK,CAAC,KAAK,EAAE,CAAA;YACb,OAAM;QACR,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAA;QACnB,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3D,CAAC;IAED,6BAA6B;IAC7B,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY;YAAE,OAAO,KAAK,CAAA;QACxF,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,WAAW,EAAE,CAAA;QACjE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAC9D,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,IAAI,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA,CAAC,CAAC;IAC/C,IAAI,UAAU,KAAa,OAAO,IAAI,CAAC,KAAK,CAAA,CAAC,CAAC;IAEtC,WAAW;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAuC,CAAA;QACnF,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,oBAAoB,EAErB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,KAAK,EACV,kBAAkB,EAGlB,sBAAsB,EAIvB,MAAM,YAAY,CAAA;AAGnB,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAA;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CA6CxB"}
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,oBAAoB,EAErB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,KAAK,EACV,kBAAkB,EAGlB,sBAAsB,EAIvB,MAAM,YAAY,CAAA;AAGnB,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAA;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CA8CxB"}
package/dist/snapshot.js CHANGED
@@ -1,4 +1,4 @@
1
- import { FuReportImageExportError } from './types.js';
1
+ import { FuReportImageExportError, assertFuReportImageContentSupported } from './types.js';
2
2
  export function createFuReportRenderSnapshot(document, options = {}) {
3
3
  const scope = options.scope ?? 'active-sheet';
4
4
  const sheetGap = integerWithin(options.sheetGap ?? 24, 0, 256);
@@ -43,6 +43,7 @@ export function createFuReportRenderSnapshot(document, options = {}) {
43
43
  fonts: [...fonts].sort((left, right) => left.localeCompare(right)),
44
44
  counters: mutable
45
45
  };
46
+ assertFuReportImageContentSupported(snapshot);
46
47
  return deepFreeze(snapshot);
47
48
  }
48
49
  function createSheetScene(sheet, x, y, baseOrigin, resources, fonts, counters) {
@@ -52,7 +53,7 @@ function createSheetScene(sheet, x, y, baseOrigin, resources, fonts, counters) {
52
53
  counters.glyphs = safeAdd(counters.glyphs, Array.from(cell.text).length);
53
54
  primitives.push({
54
55
  kind: 'cell', id: cell.id, bounds: { ...cell.bounds }, contentBox: { ...cell.contentBox },
55
- zIndex: cell.zIndex, text: cell.text, background: cell.style.background,
56
+ zIndex: cell.zIndex, text: cell.text, whiteSpace: cell.style.whiteSpace, richText: cell.richText, background: cell.style.background,
56
57
  color: cell.style.color, fontFamily: cell.style.fontFamily,
57
58
  fontSize: cell.style.fontSize, fontWeight: cell.style.fontWeight,
58
59
  fontStyle: cell.style.fontStyle, textAlign: cell.style.textAlign,