| Crates.io | oak-typescript |
| lib.rs | oak-typescript |
| version | 0.0.1 |
| created_at | 2025-10-22 04:32:18.728019+00 |
| updated_at | 2026-01-23 05:20:42.750542+00 |
| description | High-performance incremental TypeScript parser for the oak ecosystem with flexible configuration, supporting modern web development and type-safe programming. |
| homepage | https://github.com/ygg-lang/oaks |
| repository | https://github.com/ygg-lang/oaks |
| max_upload_size | |
| id | 1894944 |
| size | 121,263 |
High-performance incremental TypeScript parser for the oak ecosystem with flexible configuration, optimized for modern JavaScript development.
Oak TypeScript is a robust parser for TypeScript, designed to handle complete TypeScript syntax including modern features. Built on the solid foundation of oak-core, it provides both high-level convenience and detailed AST generation for TypeScript analysis and tooling.
Basic example:
use oak_core::{Parser, SourceText, parser::session::ParseSession};
use oak_typescript::{TypeScriptParser, TypeScriptLanguage};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = TypeScriptLanguage::standard();
let mut session = ParseSession::<TypeScriptLanguage>::default();
let parser = TypeScriptParser::new(&config);
let source = SourceText::new(r#"
interface User {
id: number;
name: string;
email?: string;
}
function greet(user: User): string {
return `Hello, ${user.name}!`;
}
"#);
let result = parser.parse(&source, &[], &mut session);
println!("Parsed TypeScript code successfully.");
Ok(())
}
use oak_core::{Parser, SourceText, parser::session::ParseSession};
use oak_typescript::{TypeScriptParser, TypeScriptLanguage};
let config = TypeScriptLanguage::standard();
let mut session = ParseSession::<TypeScriptLanguage>::default();
let parser = TypeScriptParser::new(&config);
let source = SourceText::new(r#"
interface User {
id: number;
name: string;
email?: string;
roles: string[];
}
"#);
let result = parser.parse(&source, &[], &mut session);
println!("Parsed TypeScript interface successfully.");
use oak_core::{Parser, SourceText, parser::session::ParseSession};
use oak_typescript::{TypeScriptParser, TypeScriptLanguage};
let config = TypeScriptLanguage::standard();
let mut session = ParseSession::<TypeScriptLanguage>::default();
let parser = TypeScriptParser::new(&config);
let source = SourceText::new(r#"
function calculateTotal(items: Item[]): number {
return items.reduce((sum, item) => sum + item.price, 0);
}
"#);
let result = parser.parse(&source, &[], &mut session);
println!("Parsed TypeScript function successfully.");
use oak_core::{Parser, SourceText, parser::session::ParseSession};
use oak_typescript::{TypeScriptParser, TypeScriptLanguage};
let config = TypeScriptLanguage::standard();
let mut session = ParseSession::<TypeScriptLanguage>::default();
let parser = TypeScriptParser::new(&config);
let source = SourceText::new(r#"
class UserService {
private users: User[] = [];
constructor(private apiClient: ApiClient) {}
async getUser(id: number): Promise<User> {
return this.apiClient.get(`/users/${id}`);
}
}
"#);
let result = parser.parse(&source, &[], &mut session);
println!("Parsed TypeScript class successfully.");
use oak_core::{Parser, SourceText, parser::session::ParseSession};
use oak_typescript::{TypeScriptParser, TypeScriptLanguage};
let config = TypeScriptLanguage::standard();
let mut session = ParseSession::<TypeScriptLanguage>::default();
let parser = TypeScriptParser::new(&config);
let source = SourceText::new("const x: number = 42;");
let result = parser.parse(&source, &[], &mut session);
// Token information is available in the parse result
use oak_core::{Parser, SourceText, parser::session::ParseSession};
use oak_typescript::{TypeScriptParser, TypeScriptLanguage};
let config = TypeScriptLanguage::standard();
let mut session = ParseSession::<TypeScriptLanguage>::default();
let parser = TypeScriptParser::new(&config);
let source = SourceText::new(r#"
interface User {
name: string
age: number;
}
"#);
let result = parser.parse(&source, &[], &mut session);
if let Some(errors) = result.result.err() {
println!("Parse error: {:?}", errors);
}
The parser generates a comprehensive AST with the following main structures:
Oak of typescript integrates seamlessly with:
Check out the examples directory for comprehensive examples:
Contributions are welcome!
Please feel free to submit pull requests at the project repository or open issues.