okai
Version:
AI-powered code generation tool for ServiceStack Apps. Generate TypeScript data models, C# APIs, migrations, and UI components from natural language prompts using LLMs.
110 lines • 3.37 kB
TypeScript
export interface ParsedConfig {
prompt?: string;
api?: string;
migration?: string;
uiMjs?: string;
[key: string]: any;
}
export interface ParsedDefaultExport {
[key: string]: any;
}
export interface ParsedProperty {
modifier?: string;
name: string;
type: string;
union?: string[];
optional?: boolean;
comment?: string;
annotations?: ParsedAnnotation[];
}
export interface ParsedInterface {
name: string;
extends?: string;
comment?: string;
properties: ParsedProperty[];
annotations?: ParsedAnnotation[];
}
export interface ParsedClass {
name: string;
extends?: string;
implements?: string[];
comment?: string;
properties: ParsedProperty[];
annotations?: ParsedAnnotation[];
}
export interface ParsedEnumMember {
name: string;
value?: string | number;
comment?: string;
}
export interface ParsedEnum {
name: string;
comment?: string;
members: ParsedEnumMember[];
}
export interface ParsedAnnotation {
name: string;
constructorArgs?: any[];
args?: Record<string, any>;
}
export interface ParsedReference {
path: string;
}
export interface ParseResult {
config?: ParsedConfig;
defaultExport?: ParsedDefaultExport;
classes: ParsedClass[];
interfaces: ParsedInterface[];
enums: ParsedEnum[];
references: ParsedReference[];
}
export declare class TypeScriptParser {
private static readonly CONFIG_TYPE_PATTERN;
private static readonly CONFIG_PROPERTY_PATTERN;
private static readonly DEFAULT_EXPORT_PATTERN;
private static readonly CLASS_PATTERN;
private static readonly INTERFACE_PATTERN;
private static readonly ENUM_PATTERN;
private static readonly PROPERTY_PATTERN;
private static readonly ENUM_MEMBER_PATTERN;
static readonly ANNOTATION_PATTERN: RegExp;
static readonly ANNOTATION_COMMENT: RegExp;
private static readonly REFERENCE_PATTERN;
private config?;
private defaultExport?;
private classes;
private interfaces;
private enums;
private references;
private getLineComment;
private getPreviousLine;
private parseConfigType;
private parseDefaultExport;
parseMetadata(body: string, line: string): {
comment: string;
annotations: ParsedAnnotation[];
};
private parseClassProperties;
getBlockBody(content: string, startIndex: number): string;
private parseInterfaces;
private parseClasses;
private parseReferences;
private parseEnumMembers;
isAnnotation(s?: string): boolean;
isComment(s?: string): boolean;
private parseEnums;
private cleanBody;
parse(sourceCode: string): ParseResult;
}
export declare function parseAnnotation(annotation: string): ParsedAnnotation;
export declare function splitTypes(input: string): string[];
export type ExtractUnionType<T> = T extends any ? [T] extends [UnionToIntersection<T>] ? never : T : never;
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
export declare function extractTypeComponents(typeStr: string): {
baseType: string;
unionTypes: string[];
};
export declare function removeMultilineComments(src: string): string;
export declare function convertJsDocComments(src: string): string;
export {};
//# sourceMappingURL=ts-parser.d.ts.map