@ordojs/core
Version:
Core compiler and runtime for OrdoJS framework
79 lines • 3.04 kB
JavaScript
/**
* @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