File size: 967 Bytes
3fd5cc1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import type { ExecutionBackend, LayaQuestion, LoadProgress, ModelId, Precision, SystemOneResult } from "./shared/types";

export type WorkerRequest =
  | { id: number; type: "ping" }
  | { id: number; type: "load"; model: ModelId; manifestUrl: string; precision: Precision; backend: ExecutionBackend }
  | { id: number; type: "infer"; state: unknown; questions: Array<{ id: string; question: LayaQuestion }> }
  | { id: number; type: "close" };

export type WorkerRequestWithoutId = WorkerRequest extends infer Request
  ? Request extends { id: number }
    ? Omit<Request, "id">
    : never
  : never;

export type WorkerResponse =
  | { id: number; type: "ready" }
  | { id: number; type: "progress"; progress: LoadProgress }
  | { id: number; type: "loaded" }
  | { id: number; type: "result"; result: SystemOneResult }
  | { id: number; type: "closed" }
  | { id: number; type: "error"; code: "LOAD_FAILED" | "INFERENCE_FAILED"; stage: string; message: string };