baobao_codegen_typescript/lib.rs
1//! TypeScript code generator for Bao CLI generator.
2//!
3//! This crate generates TypeScript CLI applications using [boune](https://www.npmjs.com/package/boune)
4//! a CLI library targeting [Bun](https://bun.com/) runtime.
5//!
6//! # Usage
7//!
8//! This crate is used internally by the `baobao` CLI tool. You typically don't need
9//! to use it directly.
10//!
11//! ```ignore
12//! use baobao_codegen_typescript::Generator;
13//! use baobao_codegen::LanguageCodegen;
14//! use baobao_manifest::Manifest;
15//! use std::path::Path;
16//!
17//! let manifest = Manifest::from_file("bao.toml")?;
18//! let generator = Generator::new(&manifest);
19//!
20//! // Preview files without writing
21//! let files = generator.preview();
22//!
23//! // Generate files to disk
24//! let result = generator.generate(Path::new("output"))?;
25//! ```
26//!
27//! # Generated Output
28//!
29//! The generator produces a TypeScript CLI project structure:
30//!
31//! - `src/cli.ts` - Main CLI setup with boune
32//! - `src/context.ts` - Shared context (database pools, HTTP clients)
33//! - `src/index.ts` - Entry point
34//! - `src/commands/*.ts` - Command definitions
35//! - `src/handlers/*.ts` - Handler stubs for implementation
36//! - `package.json`, `tsconfig.json`, `bao.toml`, `.gitignore`
37
38/// Target boune version for generated code.
39pub const BOUNE_VERSION: &str = "^0.9.0";
40
41mod code_file;
42mod generator;
43mod naming;
44mod renderer;
45mod structure_renderer;
46mod type_mapper;
47
48pub mod adapters;
49pub mod ast;
50pub mod files;
51
52pub use adapters::{BouneAdapter, BunSqliteAdapter};
53pub use ast::{ArrowFn, Import, JsObject};
54pub use baobao_codegen::language::{GenerateResult, LanguageCodegen, PreviewFile};
55pub use code_file::{CodeFile, RawCode, Shebang};
56pub use generator::Generator;
57pub use naming::TS_NAMING;
58pub use renderer::TypeScriptRenderer;
59pub use structure_renderer::TypeScriptStructureRenderer;
60pub use type_mapper::{TypeScriptCodeTypeMapper, TypeScriptTypeMapper};