import assert from "node:assert/strict"; import test from "node:test"; import { strToU8, unzipSync, zipSync } from "fflate"; import { compactPartnerBatchWorkbookForUpload } from "../koc-portal/app/batch-workbook-upload.ts"; const imageBytes = (marker, size) => { const bytes = new Uint8Array(size); bytes.set([0x89, 0x50, 0x4e, 0x47, marker]); for (let index = 5; index < bytes.length; index += 1) bytes[index] = marker; return bytes; }; test("slims oversized WPS workbooks without removing backfill screenshots", () => { const worksheet = ` 序号(不能改) 图片1 笔记截图 数据分析截图(单篇笔记数据分析截图) _xlfn.DISPIMG("SOURCE",1)=DISPIMG("SOURCE",1) _xlfn.DISPIMG("PUBLISH",1)=DISPIMG("PUBLISH",1) `; const cellImages = ` `; const relationships = ` `; const workbook = zipSync( { "xl/worksheets/sheet1.xml": strToU8(worksheet), "xl/cellimages.xml": strToU8(cellImages), "xl/_rels/cellimages.xml.rels": strToU8(relationships), "xl/media/source.png": [imageBytes(1, 2_000_000), { level: 0 }], "xl/media/publish.png": [imageBytes(2, 2_000), { level: 0 }], }, { level: 0 }, ); const compacted = compactPartnerBatchWorkbookForUpload(workbook); const entries = unzipSync(compacted.bytes); assert.equal(entries["xl/media/source.png"], undefined); assert.deepEqual(entries["xl/media/publish.png"], imageBytes(2, 2_000)); assert.equal(compacted.removedMediaCount, 1); assert.equal(compacted.preservedScreenshotCount, 1); assert.ok(compacted.bytes.byteLength < workbook.byteLength / 10); });