16 lines
1.3 KiB
TypeScript
16 lines
1.3 KiB
TypeScript
/**
|
||
* 单请求摘要 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'}));
|
||
};
|