合并保序、重复文件与取消后的资源释放
合并操作读取 documents 数组,至少 2 份文档。把 2 页的 A 与 3 页的 B 依次放入数组,输出 plan.pageIds 为 ["A1","A2","B1","B2","B3"],共 5 页;thumbnailOrder 与输入顺序完全一致。同一份文档出现两次不会被偷偷去重:A+A 得到 4 页 ["A1","A2","A1","A2"],并记录 duplicateSourceIds:["A"]。
默认预算为总计 50 MiB、200 页,超限在计划前报 BUDGET_EXCEEDED。加密、损坏、空文件分别返回 PASSWORD_NOT_SUPPORTED、CORRUPT_FILE、EMPTY_FILE,当前未支持密码。
生命周期语义由纯函数 lifecycleReducer 定义:连续三次「导入→导出→释放」后,登记的 6 个 Blob URL 与 3 个 worker 句柄全部进入 released 列表,live 数量为 0;点击取消进入 cancelled 状态并立即释放句柄,随后任何自动下载或显式下载都会被阻断(blockedAutoDownloads 递增、downloads 保持 0)。本轮未启动真实 worker、未创建真实 Blob URL,浏览器行为未实测。