/** * 单请求摘要 Worker 入口。只接收 version/id/Blob,输出摘要或稳定错误码,不拥有任何模型、凭证或持久任务。 * 宿主在完成/取消时 terminate;accepted 防止一个专用 Worker 误被重复消息启动第二份计算。 */ import {digestWorkerSource} from './digest-worker-source.ts'; // Dedicated to one request. Host terminates on success/failure/abort; no storage, model or credentials here. /** 将 globalThis 限定为本 Worker 使用的消息接口,避免引入浏览器页面组件依赖。 */ const scope=globalThis as unknown as {onmessage:((event:MessageEvent)=>void)|null;postMessage(value:unknown):void}; /** 首条有效请求被接受后保持 true,直到整个 Worker 被宿主终止。 */ let accepted=false; /** 校验协议和请求后启动只读摘要;成功/失败都回显输入 ID 与字节数,供宿主核对。 */ scope.onmessage=event=>{ const request=event.data;if(accepted||!request||request.version!==1||!Number.isSafeInteger(request.id)||request.id<1||!(request.bytes instanceof Blob))return;accepted=true; void digestWorkerSource(request.bytes).then(sha256=>scope.postMessage({version:1,id:request.id,byteLength:request.bytes.size,sha256}),()=>scope.postMessage({version:1,id:request.id,byteLength:request.bytes.size,error:'digest_worker_failed'})); };