literate-elm
Version:
Runs literate Elm code blocks and calculates Elm expressions
82 lines (81 loc) • 2.17 kB
TypeScript
import { Position } from "unist";
export interface ElmSymbol {
name: string;
type?: string;
}
export interface Dependencies {
[packageName: string]: string;
}
export interface EnvironmentSpec {
/**
* Elm package dependencies as name=>version pairs
*
* Acceptable version formats:
* - MAJOR
* - MAJOR.MINOR
* - MAJOR.MINOR.PATCH
* - "latest"
*/
dependencies: Dependencies;
/**
* absolute paths to source directories
*
* This is an advanced feature, which is only needed in literate-elm programs
* to test local development copies of Elm packages
*/
sourceDirectories: string[];
}
export declare type EnvironmentStatus = "ready" | "error";
export interface EnvironmentMetadata {
status: EnvironmentStatus;
createdAt: number;
expiresAt?: number;
errorMessage?: string;
}
export interface Environment {
metadata: EnvironmentMetadata;
spec: EnvironmentSpec;
workingDirectory: string;
}
export interface Program {
environment: Environment;
codeNodes: CodeNode[];
expressionNodes: ExpressionNode[];
}
export declare type ProgramResultStatus = "succeeded" | "failed";
export declare type MessageSeverity = "error" | "warning" | "info";
export interface Message {
text: string;
position: Position;
fileIndex: number;
severity: MessageSeverity;
node: CodeNode | ExpressionNode | null;
}
export interface SucceededProgramResult {
program: Program;
status: ProgramResultStatus & "succeeded";
messages: Message[];
evaluatedExpressions: EvaluatedExpression[];
debugLog: string[];
}
export interface FailedProgramResult {
program: Program;
status: ProgramResultStatus & "failed";
messages: Message[];
}
export declare type ProgramResult = SucceededProgramResult | FailedProgramResult;
export interface CodeNode {
text: string;
position: Position;
fileIndex?: number;
}
export interface ExpressionNode {
text: string;
position: Position;
fileIndex?: number;
}
export interface EvaluatedExpression {
node: ExpressionNode;
value: any;
valueStringRepresentation: string;
}