Files
workinf_Blender_Wasm/web/protocol/error.ts
2026-08-14 22:32:09 -04:00

166 lines
4.7 KiB
TypeScript

export type ErrorSeverity = "info" | "warning" | "error" | "fatal";
export type ErrorCode =
| "CAPABILITY_MISSING"
| "PROTOCOL_MISMATCH"
| "REVISION_CONFLICT"
| "INVALID_ARGUMENT"
| "WASM_INIT_FAILED"
| "WASM_OUT_OF_MEMORY"
| "BLEND_READ_FAILED"
| "BLEND_WRITE_FAILED"
| "STORAGE_QUOTA"
| "STORAGE_TRANSACTION"
| "WORKER_TERMINATED"
| "TASK_VALIDATION_FAILED"
| "LINKED_DATA_MUTATION_BLOCKED"
| "SCULPT_MESH_NOT_SINGLE_USER"
| "SCULPT_TOPOLOGY_UNSUPPORTED"
| "SCULPT_STROKE_BUDGET_EXCEEDED"
| "SCULPT_ATTRIBUTE_INVALID"
| "GN_INVALID_GRAPH"
| "GN_NODE_UNSUPPORTED"
| "GN_SOCKET_TYPE_MISMATCH"
| "GN_GROUP_RECURSION"
| "GN_EXTERNAL_RESOURCE_MISSING"
| "GN_DEPENDENCY_CYCLE"
| "GEOMETRY_NODES_SIMULATION_UNAVAILABLE"
| "SIMULATION_CACHE_INVALID"
| "SIMULATION_CACHE_MISSING"
| "SIMULATION_CACHE_HASH_MISMATCH"
| "SHADER_NODE_UNSUPPORTED"
| "SHADER_INVALID_GRAPH"
| "SHADER_GRAPH_CYCLE"
| "SHADER_SOCKET_TYPE_MISMATCH"
| "SHADER_EXTERNAL_RESOURCE_MISSING"
| "GPU_TEXTURE_INVALID"
| "GPU_TEXTURE_HASH_MISMATCH"
| "GPU_TEXTURE_BUDGET_EXCEEDED"
| "GPU_TEXTURE_DECODE_FAILED"
| "GPU_GEOMETRY_BUDGET_EXCEEDED"
| "UDIM_MANIFEST_INVALID"
| "UDIM_TILE_MISSING"
| "UDIM_MULTI_TILE_UNAVAILABLE"
| "IBL_FORMAT_UNSUPPORTED"
| "IBL_ENVIRONMENT_MISSING"
| "VOLUME_SHADER_UNAVAILABLE"
| "SUBSURFACE_SHADER_UNAVAILABLE"
| "WEBGPU_RENDERER_UNAVAILABLE"
| "POSTPROCESS_PASS_UNAVAILABLE"
| "NLA_INVALID_STACK"
| "NLA_ACTION_MISSING"
| "NLA_PATH_INCOMPATIBLE"
| "NLA_TIME_WARP_UNSUPPORTED"
| "NLA_STRIP_UNSUPPORTED"
| "NON_MESH_DATA_UNSUPPORTED"
| "NON_MESH_DATA_BUDGET_EXCEEDED"
| "NON_MESH_PERFORMANCE_BUDGET_EXCEEDED"
| "NON_MESH_RESOURCE_MISSING"
| "NON_MESH_RESOURCE_OUTSIDE_PROJECT"
| "NON_MESH_VDB_BUDGET_EXCEEDED"
| "NON_MESH_BINARY_INVALID"
| "VDB_CONVERSION_REQUIRED"
| "VDB_CONVERTER_UNAVAILABLE"
| "VDB_CONVERSION_INVALID"
| "NANOVDB_MANIFEST_INVALID"
| "NANOVDB_HASH_MISMATCH"
| "NANOVDB_STREAM_INCOMPLETE"
| "NANOVDB_GRID_UNSUPPORTED"
| "NANOVDB_GPU_BUDGET_EXCEEDED"
| "NON_MESH_DATA_SHARED"
| "NON_MESH_PROPERTY_INVALID"
| "NON_MESH_TOPOLOGY_EDIT_UNSUPPORTED"
| "SELECTION_HISTORY_INVALID"
| "SELECTION_HISTORY_BUDGET_EXCEEDED"
| "RAYCAST_HIT_INVALID"
| "SELECTION_UNDO_UNAVAILABLE"
| "GREASE_PENCIL_SCHEMA_INVALID"
| "GREASE_PENCIL_BUDGET_EXCEEDED"
| "PAINT_SCHEMA_INVALID"
| "PAINT_BUDGET_EXCEEDED"
| "PHYSICS_MANIFEST_INVALID"
| "PHYSICS_BUDGET_EXCEEDED"
| "PHYSICS_DEPENDENCY_CYCLE"
| "PHYSICS_CACHE_FRAME_MISMATCH"
| "PHYSICS_CACHE_PLAYBACK_UNAVAILABLE"
| "PHYSICS_SOLVER_UNAVAILABLE"
| "PHYSICS_SERVER_UNAVAILABLE"
| "RENDER_PROPERTY_INVALID"
| "COMPOSITOR_GRAPH_INVALID"
| "COMPOSITOR_GRAPH_CYCLE"
| "COMPOSITOR_BUDGET_EXCEEDED"
| "COMPOSITOR_RESOURCE_MISSING"
| "COMPOSITOR_NODE_UNSUPPORTED"
| "COMPOSITOR_CANCELLED"
| "SEQUENCER_SCHEMA_INVALID"
| "SEQUENCER_BUDGET_EXCEEDED"
| "SEQUENCER_DEPENDENCY_CYCLE"
| "SEQUENCER_RESOURCE_MISSING"
| "SEQUENCER_RESOURCE_OUTSIDE_PROJECT"
| "SEQUENCER_CODEC_UNSUPPORTED"
| "SEQUENCER_CANCELLED"
| "TRACKING_SCHEMA_INVALID"
| "TRACKING_BUDGET_EXCEEDED"
| "TRACKING_RESOURCE_OUTSIDE_PROJECT"
| "TRACKING_SOURCE_HASH_MISMATCH"
| "TRACKING_BINDING_MISSING"
| "TRACKING_SOLVE_UNAVAILABLE"
| "MASK_SCHEMA_INVALID"
| "ASSET_MANIFEST_INVALID"
| "ASSET_BUDGET_EXCEEDED"
| "ASSET_SOURCE_HASH_MISMATCH"
| "ASSET_LICENSE_MISSING"
| "LIBRARY_DEPENDENCY_CYCLE"
| "LIBRARY_MUTATION_UNAVAILABLE"
| "IO_FORMAT_UNSUPPORTED"
| "IO_ARCHIVE_UNSAFE"
| "IO_EXTERNAL_URI_BLOCKED"
| "EDITOR_LAYOUT_INVALID"
| "EDITOR_LAYOUT_BUDGET_EXCEEDED"
| "EDITOR_SELECTION_INVALID"
| "EDITOR_KEYMAP_INVALID"
| "EDITOR_WRITER_UNAVAILABLE"
| "EDITOR_GIZMO_UNAVAILABLE"
| "SCRIPT_MANIFEST_INVALID"
| "SCRIPT_POLICY_DENIED"
| "SCRIPT_SIGNATURE_INVALID"
| "SCRIPT_SANDBOX_UNAVAILABLE"
| "SCRIPT_BUDGET_EXCEEDED"
| "PLATFORM_CAPABILITY_UNAVAILABLE"
| "SERVER_JOB_UNAVAILABLE"
| "DRIVER_EXECUTION_BLOCKED"
| "ADDON_INSTALL_BLOCKED"
| "RELEASE_MANIFEST_INVALID"
| "RELEASE_GATE_BLOCKED"
| "RELEASE_EVIDENCE_MISSING"
| "RELEASE_DEPENDENCY_CYCLE"
| "RELEASE_TEST_CHANNEL_MISSING"
| "RELEASE_PERFORMANCE_MISSING"
| "RELEASE_FAULT_EVIDENCE_MISSING"
| "RELEASE_PROVENANCE_MISSING";
export interface ErrorReport {
code: ErrorCode;
severity: ErrorSeverity;
message: string;
detail?: string;
taskId?: string;
revision?: number;
recoverable: boolean;
cause?: string;
}
export function errorReport(
code: ErrorCode,
message: string,
options: Partial<Omit<ErrorReport, "code" | "message">> = {},
): ErrorReport {
return {
code,
message,
severity: "error",
recoverable: true,
...options,
};
}