UNPKG

@ordojs/core

Version:

Core compiler and runtime for OrdoJS framework

79 lines 3.04 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 DOM optimizer types export { DOMUpdateType } from './dom-optimizer.js'; /** * Main compiler interface */ export class OrdoJSCompiler { options; constructor(options) { this.options = options; } compile(source) { 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 //# sourceMappingURL=index.js.map