Files
lead/frontend/src/lib/components/grid/messages.ts
2025-09-09 21:21:39 +10:00

41 lines
704 B
TypeScript

interface LeadMsg {
msg_type: 'set' | 'get' | 'error' | 'bulk';
cell?: CellRef;
raw?: string;
eval?: Eval;
bulk_msgs?: Array<LeadMsg>;
}
interface CellRef {
row: number;
col: number;
}
type LiteralType = 'Number' | 'Boolean' | 'String';
type LiteralValue = number | string | boolean;
type EvalRange = Array<Eval>;
interface Literal {
type: LiteralType;
value: LiteralValue;
}
interface EvalCellRef {
eval: Eval;
reference: CellRef;
}
interface LeadErr {
code: 'DivZero' | 'TypeErr' | 'Syntax' | 'Server' | 'Unsupported';
desc: string;
title: string;
}
// Tagged union
type Eval =
| { literal: Literal }
| { cellref: EvalCellRef }
| { range: Range }
| { err: LeadErr }
| 'unset';