Skip to content

v0.1.0

Latest
Compare
Choose a tag to compare
@CodeMeAPixel CodeMeAPixel released this 03 Aug 00:21
· 5 commits to master since this release

🎉 Initial Release

Core Parsing & Generation

  • Complete Lua parser with full AST generation supporting all Lua 5.1+ syntax
  • Advanced Luau parser with type annotations, generics, and modern syntax features
  • TypeScript code generation from Luau type definitions with intelligent mapping
  • Lua code formatting with customizable styling options and pretty-printing
  • AST manipulation utilities with comprehensive type definitions

Advanced Type System

  • Primitive type mapping: string, number, boolean, nilnull
  • Optional types: foo: string?foo?: string
  • Array types: {string}string[] with proper element type detection
  • Record types: {[string]: any}Record<string, any> and index signatures
  • Union types: "GET" | "POST" | "PUT" with string literal preservation
  • Intersection types: A & B with proper parenthesization
  • Function types: (x: number) -> string(x: number) => string
  • Method types: Automatic self parameter removal for class methods
  • Generic types: Support for parameterized types and type variables
  • Table types: Complex nested object structures with property signatures

Language Features

  • Template string interpolation: Full backtick string support with ${var} and {var} syntax
  • Continue statements: Proper parsing with loop context validation
  • Reserved keywords as properties: Handle type, export, function, local as object keys
  • Comment preservation: Single-line (--) and multi-line (--[[ ]]) comment handling
  • JSDoc conversion: Transform Lua comments to TypeScript JSDoc format
  • Export statements: Support for export type declarations
  • String literals: Proper handling of quoted strings in union types

Modular Architecture

  • Component-based lexer: Specialized tokenizers for numbers, strings, identifiers, comments
  • Pluggable tokenizer system: Easy extension with new language constructs
  • Operator precedence handling: Correct parsing of complex expressions
  • Error recovery: Graceful handling of syntax errors with detailed diagnostics
  • Memory efficient: Streaming parsing for large files

Plugin System

  • File-based plugins: Load plugins from JavaScript/TypeScript files
  • Inline plugin objects: Direct plugin integration in code
  • Type transformation hooks: Customize how Luau types map to TypeScript
  • Interface modification: Add, remove, or modify generated interface properties
  • Post-processing: Transform final generated TypeScript code
  • Plugin registry: Manage multiple plugins with validation
  • Hot reloading: Plugin cache management for development

CLI Tools

  • File conversion: luats convert file.lua -o file.d.ts
  • Directory processing: luats convert-dir src/lua -o src/types
  • Watch mode: Auto-regeneration on file changes with --watch
  • Syntax validation: luats validate for error checking
  • Configuration files: Support for luats.config.json with rich options
  • Glob patterns: Include/exclude file patterns for batch processing

Developer Experience

  • Comprehensive TypeScript definitions: Full type safety for all APIs
  • Error handling: Detailed error messages with line/column information
  • Snapshot testing: Fixture-based testing for regression prevention
  • Performance optimizations: Efficient parsing and generation algorithms
  • Documentation generation: Generate docs from parsed code structures

Configuration Options

  • Type generation: useUnknown, interfacePrefix, includeSemicolons
  • Comment handling: preserveComments, commentStyle (jsdoc/inline)
  • Code formatting: Indentation, spacing, and style preferences
  • Plugin configuration: File paths and plugin-specific options
  • Include/exclude patterns: Fine-grained control over processed files

Testing & Quality

  • 47 comprehensive tests covering all major functionality
  • 100% test pass rate with robust edge case handling
  • Snapshot testing for generated TypeScript output validation
  • Plugin system testing with both file and object-based plugins
  • CLI integration tests with temporary file handling
  • Error scenario testing for graceful failure handling

Examples & Documentation

  • Plugin examples: ReadonlyPlugin, CustomNumberPlugin, TypeMapperPlugin
  • CLI usage examples: Common workflows and configuration patterns
  • API examples: Programmatic usage for all major features
  • Roblox integration: Specific examples for game development workflows

Technical Details

  • Lexer: 4 specialized tokenizers (Number, String, Identifier, Comment)
  • Parser: Recursive descent with operator precedence and error recovery
  • Type System: 15+ AST node types with full TypeScript definitions
  • Plugin Architecture: 4 transformation hooks (transformType, transformInterface, process, postProcess)
  • CLI: 4 main commands with configuration file support
  • Exports: Modular imports for tree-shaking and selective usage

This release establishes LuaTS as a production-ready tool for Lua/Luau to TypeScript workflows, with particular strength in Roblox development, legacy code integration, and type-safe API definitions.