UNPKG

llmxml

Version:

Convert between markdown and LLM-friendly pseudo-XML

95 lines (81 loc) 1.76 kB
export interface SourceLocation { start: { offset: number; line: number; column: number; }; end: { offset: number; line: number; column: number; }; } export interface ParseOptions { filename?: string; } export interface ParseResult { ast: ASTNode[]; errors: ParseError[]; } export class ParseError extends Error { constructor( message: string, public location: SourceLocation ) { super(message); this.name = 'ParseError'; } } export interface BaseNode { type: string; location?: SourceLocation; } export interface TagNode extends BaseNode { type: 'tag'; name: string; attributes: Record<string, string>; children?: ASTNode[]; text?: string; depth?: number; } export interface TextNode extends BaseNode { type: 'text'; value: string; textType?: 'code'; language?: string; } export interface HeadingNode extends BaseNode { type: 'heading'; text: string; depth: number; children: ASTNode[]; } export interface CodeBlockNode extends BaseNode { type: 'code'; value: string; lang?: string; } export interface ListNode extends BaseNode { type: 'list'; ordered?: boolean; children: ASTNode[]; } export interface ListItemNode extends BaseNode { type: 'listItem'; children: ASTNode[]; } export interface ParagraphNode extends BaseNode { type: 'paragraph'; children: ASTNode[]; } export interface EmphasisNode extends BaseNode { type: 'emphasis' | 'strong'; marker?: string; children: ASTNode[]; } export interface LinkNode extends BaseNode { type: 'link'; url: string; children: ASTNode[]; } export type ASTNode = TagNode | TextNode | HeadingNode | CodeBlockNode | ListNode | ListItemNode | ParagraphNode | EmphasisNode | LinkNode;