UNPKG

@ordojs/core

Version:

Core compiler and runtime for OrdoJS framework

135 lines (111 loc) 4.16 kB
/** * @fileoverview OrdoJS Compiler - Main compiler exports */ // Export compiler components export { OrdoJSCodeGenerator } from './code-generator-fixed.js'; export { CodeSplitter } from './code-splitter.js'; export { OrdoJSCSSInJSCompiler } from './css-in-js-compiler.js'; export { OrdoJSCSSOptimizer } from './css-optimizer.js'; export { DeadCodeEliminator } from './dead-code-eliminator.js'; export { DependencyAnalyzer } from './dependency-analyzer.js'; export { DOMOptimizer } from './dom-optimizer.js'; export { FileSystemRouter } from './fs-router.js'; export { OrdoJSLexer } from './lexer.js'; export { OrdoJSParser } from './parser.js'; export { RPCGenerator } from './rpc-generator.js'; export { OrdoJSSSR } from './ssr-engine.js'; // Import required classes for internal use import { OrdoJSCodeGenerator } from './code-generator-fixed.js'; import { DeadCodeEliminator } from './dead-code-eliminator.js'; import { OrdoJSLexer } from './lexer.js'; import { OrdoJSParser } from './parser.js'; // Export dependency analyzer types export { DependencyType, UpdateType } from './dependency-analyzer.js'; export type { Dependency, DependencyGraph, DependencyNode, UpdateFunction } from './dependency-analyzer.js'; // Export DOM optimizer types export { DOMUpdateType } from './dom-optimizer.js'; export type { DOMUpdateOperation, TwoWayBinding, UpdateBatch } from './dom-optimizer.js'; // Export dead code eliminator types export type { DeadCodeEliminationResult, DeadCodeEliminatorOptions, UsageAnalysis } from './dead-code-eliminator.js'; // Export code splitter types export type { ChunkInfo, CodeSplittingConfig, CodeSplittingResult } from './code-splitter.js'; // Export RPC generator types export type { RPCCallMetadata, RPCGeneratorOptions, RPCStub } from './rpc-generator.js'; // Export SSR engine types export type { RouteConfig, SSROptions } from './ssr-engine.js'; // Export FileSystemRouter types export type { Route, RouterOptions } from './fs-router.js'; // Export CSS optimizer types export type { CSSOptimizationOptions, CSSOptimizationResult, CSSUsageAnalysis } from './css-optimizer.js'; // Export CSS-in-JS compiler types export type { CSSFunctionExpression, CSSInJSCompilationResult, CSSInJSExpression, CSSInJSOptions, CSSObjectExpression, CSSTemplateExpression } from './css-in-js-compiler.js'; // Compiler options export interface CompilerOptions { target: 'es2022' | 'es2020' | 'es2018'; optimize: boolean; sourceMaps: boolean; minify: boolean; } export interface BasicCompilationResult { success: boolean; output?: string; errors: string[]; warnings: string[]; } /** * Main compiler interface */ export class OrdoJSCompiler { constructor(private options: CompilerOptions) { } compile(source: string): BasicCompilationResult { try { // Create lexer and tokenize the source const lexer = new OrdoJSLexer(); const tokens = lexer.tokenize(); // Parse tokens into AST const parser = new OrdoJSParser(tokens); const ast = parser.parse(); // Apply optimizations if enabled let optimizedAst = ast; if (this.options.optimize) { // Apply dead code elimination and tree shaking const deadCodeEliminator = new DeadCodeEliminator({ aggressiveTreeShaking: true, inlineSmallFunctions: true, maxInlineSize: 5, removeUnusedVariables: true, removeUnreachableCode: true }); optimizedAst = deadCodeEliminator.optimize(ast); } // Generate code from optimized AST const generator = new OrdoJSCodeGenerator({ minify: this.options.minify, sourceMaps: this.options.sourceMaps, target: this.options.minify ? 'production' : 'development' }); const result = generator.generate(optimizedAst); return { success: true, output: result.client, errors: [], warnings: [] }; } catch (error) { return { success: false, errors: [error instanceof Error ? error.message : String(error)], warnings: [] }; } } } // Import required types