Files
newt/playground/src/types.ts
2025-07-15 21:30:42 -04:00

78 lines
1.7 KiB
TypeScript

import { EditorView } from "codemirror";
import { linter, Diagnostic } from "@codemirror/lint";
export interface CompileReq {
id: string
type: "compileRequest";
fileName: string;
src: string;
compile: boolean;
}
export interface CompileRes {
id: string
type: "compileResult";
output: string;
javascript: string;
duration: number;
}
export interface ConsoleList {
type: 'setConsole'
messages: string[];
}
export interface ConsoleItem {
type: 'pushConsole'
message: string;
}
export interface ExecCode {
type: 'exec'
src: string
}
export type Message = CompileReq | CompileRes | ConsoleList | ConsoleItem | ExecCode
// editor.(createModel / setModel / getModels) to switch files
// TODO - remember files and allow switching?
// static zip filesystem with user changes overlaid via localStorage
// download individual files (we could use the cheap compression from the pdflib or no compression to make zip download)
// would need way to reset/delete
export interface FC {
file: string;
line: number;
col: number;
}
interface TopEntry {
fc: FC;
name: string;
type: string;
}
export interface TopData {
context: TopEntry[];
}
export interface EditorDelegate {
getEntry(word: string, row: number, col: number): TopEntry | undefined
onChange(value: string): unknown
getFileName(): string
lint(view: EditorView): Promise<Diagnostic[]> | Diagnostic[]
}
export interface Marker {
severity: 'error' | 'info' | 'warning'
message: string
startColumn: number
startLineNumber: number
endColumn: number
endLineNumber: number
}
export interface AbstractEditor {
setValue: (_: string) => unknown;
getValue: () => string;
setMarkers: (_: Marker[]) => unknown
setDark(isDark: boolean): unknown
}