{"_id":"@ai-partner-x/aiko-boot-codegen","_rev":"4-f199aab34612e36943cd38c664df0c55","name":"@ai-partner-x/aiko-boot-codegen","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.3":{"name":"@ai-partner-x/aiko-boot-codegen","version":"0.1.3","_id":"@ai-partner-x/aiko-boot-codegen@0.1.3","maintainers":[{"name":"moyin333","email":"158182907@qq.com"}],"bin":{"aiko-codegen":"dist/cli/index.js"},"dist":{"shasum":"8a603fa11f3c6b1d9b0767aeafa1136aa05be07e","tarball":"https://registry.npmjs.org/@ai-partner-x/aiko-boot-codegen/-/aiko-boot-codegen-0.1.3.tgz","fileCount":62,"integrity":"sha512-5/CbVnVXMpZCQnQn7PFAV750JyHU3O4kpuwK+LVeah7JIDvqQwylrNcVPKLjLQaz1y5tVPFFa70285ok3GfJhg==","signatures":[{"sig":"MEUCIH2SHJtolO2Xbts9lC8MZckVqnEPDmec3Vu1QRz4gWXZAiEA/v8WqU3bxJ/h7PaQHgrsQQMcEudv+e+OVVlmIhJQF4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":359278},"main":"./dist/index.js","type":"module","_from":"file:ai-partner-x-aiko-boot-codegen-0.1.3.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","test":"jest","build":"tsc"},"_npmUser":{"name":"moyin333","email":"158182907@qq.com"},"_resolved":"/tmp/45174463e974e3a3f43d541d154ec436/ai-partner-x-aiko-boot-codegen-0.1.3.tgz","_integrity":"sha512-5/CbVnVXMpZCQnQn7PFAV750JyHU3O4kpuwK+LVeah7JIDvqQwylrNcVPKLjLQaz1y5tVPFFa70285ok3GfJhg==","_npmVersion":"10.8.2","description":"TypeScript to Java code generator for Aiko Boot","directories":{},"_nodeVersion":"20.20.1","dependencies":{"glob":"^10.5.0","tslib":"^2.6.0","commander":"^12.1.0","typescript":"^5.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","@types/glob":"^9.0.0","@types/jest":"^29.5.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/aiko-boot-codegen_0.1.3_1773857058561_0.6124762333489406","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@ai-partner-x/aiko-boot-codegen","version":"0.1.4","_id":"@ai-partner-x/aiko-boot-codegen@0.1.4","maintainers":[{"name":"moyin333","email":"158182907@qq.com"}],"bin":{"aiko-codegen":"dist/cli/index.js"},"dist":{"shasum":"9b543a53549ebbd8238b62744212dc8962ec9cda","tarball":"https://registry.npmjs.org/@ai-partner-x/aiko-boot-codegen/-/aiko-boot-codegen-0.1.4.tgz","fileCount":62,"integrity":"sha512-kvHdi9BUGmwxynUU2Tg+6oFuN454xPKGmEDWkDv4X0+oQrlrNhmOe3cRg66jPkFOdKA4h6VytAtCWK4epuxphQ==","signatures":[{"sig":"MEUCIFdTX0nq+vGY93w24kL+CjNbQfl6trTM0E9LTYsHak/aAiEA3oOsIO702v3vn+MgxMqeYwAokCWGz/WfGa80NiuE0zI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":359278},"main":"./dist/index.js","type":"module","_from":"file:ai-partner-x-aiko-boot-codegen-0.1.4.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","test":"jest","build":"tsc"},"_npmUser":{"name":"moyin333","email":"158182907@qq.com"},"_resolved":"/tmp/3b714889c0f0206a4175c8d16b48ec97/ai-partner-x-aiko-boot-codegen-0.1.4.tgz","_integrity":"sha512-kvHdi9BUGmwxynUU2Tg+6oFuN454xPKGmEDWkDv4X0+oQrlrNhmOe3cRg66jPkFOdKA4h6VytAtCWK4epuxphQ==","_npmVersion":"10.8.2","description":"TypeScript to Java code generator for Aiko Boot","directories":{},"_nodeVersion":"20.20.1","dependencies":{"glob":"^10.5.0","tslib":"^2.6.0","commander":"^12.1.0","typescript":"^5.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","@types/glob":"^9.0.0","@types/jest":"^29.5.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/aiko-boot-codegen_0.1.4_1773908271413_0.14460908645722204","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@ai-partner-x/aiko-boot-codegen","version":"0.1.5","description":"TypeScript to Java code generator for Aiko Boot","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"aiko-codegen":"dist/cli/index.js"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"dependencies":{"commander":"^12.1.0","glob":"^10.5.0","tslib":"^2.6.0","typescript":"^5.3.3"},"devDependencies":{"@types/glob":"^9.0.0","@types/jest":"^29.5.0","@types/node":"^20.11.0","jest":"^29.7.0","ts-jest":"^29.1.0"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"jest"},"_id":"@ai-partner-x/aiko-boot-codegen@0.1.5","_integrity":"sha512-lgoeY0V2+5ymVk8/kziu7zAPbAALKJolcPpsiT4YjZ1OLbxBu6YIa9d6sqqXQ8EroRFk9fKY9QJSOZCmPHWE2w==","_resolved":"/tmp/8fde7bf0e4f978dc44590b7243d1dd24/ai-partner-x-aiko-boot-codegen-0.1.5.tgz","_from":"file:ai-partner-x-aiko-boot-codegen-0.1.5.tgz","_nodeVersion":"20.20.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-lgoeY0V2+5ymVk8/kziu7zAPbAALKJolcPpsiT4YjZ1OLbxBu6YIa9d6sqqXQ8EroRFk9fKY9QJSOZCmPHWE2w==","shasum":"b4c900bb9cc4f3db08508397b25e0177ad1cb5f0","tarball":"https://registry.npmjs.org/@ai-partner-x/aiko-boot-codegen/-/aiko-boot-codegen-0.1.5.tgz","fileCount":62,"unpackedSize":359278,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBIkYFDgw+p1Ub5GQu49ytJtoPXH3AP9wABKKfQOZBveAiAEx9pmcCw/jwzbHY8kPd9JQn6g5JAW0OCjDERDmVg2rw=="}]},"_npmUser":{"name":"moyin333","email":"158182907@qq.com"},"directories":{},"maintainers":[{"name":"moyin333","email":"158182907@qq.com"},{"name":"liujin0528","email":"un0528@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aiko-boot-codegen_0.1.5_1774102911191_0.33377896775091176"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-18T18:04:18.445Z","modified":"2026-03-21T14:21:51.446Z","0.1.3":"2026-03-18T18:04:18.745Z","0.1.4":"2026-03-19T08:17:51.570Z","0.1.5":"2026-03-21T14:21:51.325Z"},"description":"TypeScript to Java code generator for Aiko Boot","maintainers":[{"name":"moyin333","email":"158182907@qq.com"},{"name":"liujin0528","email":"un0528@hotmail.com"}],"readme":"# @ai-partner-x/aiko-boot-codegen\n\nTypeScript 到 Java 代码生成器，专为 Aiko Boot 框架设计。\n\n## 功能特性\n\n- ✅ **完整的代码生成**：支持实体类、仓库接口、服务类、控制器类、DTO 类等\n- ✅ **多组件支持**：支持 Redis、消息队列、安全认证、应用框架等组件\n- ✅ **插件系统**：可扩展的插件架构，支持自定义转换逻辑\n- ✅ **增量生成**：基于文件哈希的增量生成，仅重新生成变更的文件\n- ✅ **类型映射**：自动将 TypeScript 类型映射到 Java 类型\n- ✅ **装饰器转换**：自动将 TypeScript 装饰器转换为 Java 注解\n- ✅ **错误处理**：完善的错误分类和报告机制\n- ✅ **单元测试**：完整的测试覆盖，确保代码质量\n\n## 安装\n\n```bash\nnpm install @ai-partner-x/aiko-boot-codegen\n```\n\n## 快速开始\n\n### 1. 创建 TypeScript 实体类\n\n```typescript\nimport { Entity, TableId, TableField } from '@ai-partner-x/aiko-boot-starter-orm';\n\n@Entity\nclass User {\n  @TableId\n  id: number;\n\n  @TableField('user_name')\n  name: string;\n\n  @TableField('user_email')\n  email: string;\n\n  createdAt: Date;\n}\n```\n\n### 2. 创建 TypeScript 仓库接口\n\n```typescript\nimport { Repository } from '@ai-partner-x/aiko-boot-starter-orm';\n\n@Repository\ninterface UserRepository {\n  findById(id: number): User;\n  findAll(): User[];\n  save(user: User): void;\n  deleteById(id: number): void;\n}\n```\n\n### 3. 创建 TypeScript 服务类\n\n```typescript\nimport { Service, Autowired, Transactional } from '@ai-partner-x/aiko-boot';\n\n@Service\nclass UserService {\n  @Autowired\n  private userRepository: UserRepository;\n\n  @Transactional\n  getUser(id: number): User {\n    return this.userRepository.selectById(id);\n  }\n\n  @Transactional\n  createUser(user: User): void {\n    this.userRepository.insert(user);\n  }\n\n  getAllUsers(): User[] {\n    return this.userRepository.selectList(null);\n  }\n}\n```\n\n### 4. 创建 TypeScript 控制器类\n\n```typescript\nimport { RestController, Autowired, GetMapping, PostMapping, PathVariable, RequestBody } from '@ai-partner-x/aiko-boot';\n\n@RestController\nclass UserController {\n  @Autowired\n  private userService: UserService;\n\n  @GetMapping('/users/{id}')\n  getUser(@PathVariable('id') id: number): User {\n    return this.userService.getUser(id);\n  }\n\n  @GetMapping('/users')\n  getUsers(): User[] {\n    return this.userService.getAllUsers();\n  }\n\n  @PostMapping('/users')\n  createUser(@RequestBody user: User): void {\n    this.userService.createUser(user);\n  }\n}\n```\n\n### 5. 运行代码生成器\n\n```bash\n# 生成所有文件\naiko-codegen transpile ./src --out ./gen --package com.example\n\n# 使用增量生成（仅重新生成变更的文件）\naiko-codegen transpile ./src --out ./gen --package com.example --incremental\n\n# 查看详细信息\naiko-codegen transpile ./src --out ./gen --package com.example --verbose\n```\n\n## 命令行选项\n\n### transpile 命令\n\n```bash\naiko-codegen transpile <source> [options]\n```\n\n**参数：**\n\n- `<source>` - 源目录或文件（必填）\n\n**选项：**\n\n| 选项 | 简写 | 默认值 | 说明 |\n|------|--------|----------|------|\n| `--out` | `-o` | `./gen` | 输出目录 |\n| `--package` | `-p` | `com.example` | Java 包名 |\n| `--lombok` | | `false` | 生成 Lombok 注解 |\n| `--java-version` | | `17` | 目标 Java 版本 (11, 17, 21) |\n| `--spring-boot` | | `3.2.0` | Spring Boot 版本 |\n| `--dry-run` | | `false` | 显示将要生成的文件而不写入 |\n| `--verbose` | `-v` | `false` | 详细输出 |\n| `--incremental` | | `false` | 启用增量生成（仅重新生成变更的文件） |\n\n### validate 命令\n\n```bash\naiko-codegen validate <source> [options]\n```\n\n**参数：**\n\n- `<source>` - 源目录或文件（必填）\n\n**选项：**\n\n| 选项 | 简写 | 默认值 | 说明 |\n|------|--------|----------|------|\n| `--verbose` | `-v` | `false` | 详细输出 |\n\n## 支持的组件\n\n### ORM 组件\n\n支持 MyBatis-Plus 注解：\n\n- `@Entity` / `@TableName` - 实体类\n- `@TableId` - 主键字段\n- `@TableField` - 数据库字段\n- `@Repository` / `@Mapper` - 仓库接口\n\n### Redis 组件\n\n支持 Spring Data Redis 注解：\n\n- `@RedisHash` - Redis 实体\n- `@RedisKey` / `@Id` - Redis 键\n- `@RedisValue` / `@Indexed` - Redis 值\n- `@RedisRepository` / `@RedisRepo` - Redis 仓库\n\n### 消息队列组件\n\n支持 Spring Cloud Stream 注解：\n\n- `@EnableBinding` - 启用绑定\n- `@StreamListener` / `@MqListener` - 监听器\n- `@Output` / `@MqSender` - 发送器\n\n### 安全认证组件\n\n支持 Spring Security 注解：\n\n- `@EnableGlobalMethodSecurity` - 启用全局方法安全\n- `@PreAuthorize` - 预授权\n- `@PostAuthorize` - 后授权\n- `@Secured` - 安全\n- `@RolesAllowed` - 角色允许\n- `@AuthenticationPrincipal` - 认证主体\n\n### 应用框架组件\n\n支持管理框架注解：\n\n- `@AdminModule` - 管理模块\n- `@AdminMenu` - 管理菜单\n- `@AdminRoute` - 管理路由\n- `@AdminPermission` - 管理权限\n\n## 类型映射\n\n代码生成器自动将 TypeScript 类型映射到 Java 类型：\n\n| TypeScript | Java |\n|-----------|-------|\n| `number` | `Integer` |\n| `string` | `String` |\n| `boolean` | `Boolean` |\n| `Date` | `LocalDateTime` |\n| `any` | `Object` |\n| `void` | `void` |\n| `null` | `null` |\n| `undefined` | `null` |\n\n### ID 类型映射\n\n代码生成器支持不同场景下的 ID 类型：\n\n- **默认**：`Long`（数据库主键）\n- **Redis**：`String`（Redis 实体 ID）\n- **年龄**：`Integer`（年龄等字段）\n\n## 插件系统\n\n### 内置插件\n\n代码生成器包含以下内置插件：\n\n- `mapperPlugin` - Mapper 转换\n- `entityPlugin` - 实体转换\n- `validationPlugin` - 验证注解转换\n- `datePlugin` - 日期类型转换\n- `servicePlugin` - 服务转换\n- `controllerPlugin` - 控制器转换\n- `queryWrapperPlugin` - QueryWrapper 转换\n\n### 自定义插件\n\n你可以创建自定义插件来扩展代码生成器的功能：\n\n```typescript\nimport type { TranspilePlugin } from '@ai-partner-x/aiko-boot-codegen';\n\nconst customPlugin: TranspilePlugin = {\n  name: 'custom-plugin',\n  priority: 100,\n  transformDecorator: (decorator, context) => {\n    // 自定义装饰器转换逻辑\n    return decorator;\n  },\n  transformType: (type, context) => {\n    // 自定义类型转换逻辑\n    return type;\n  },\n  transformMethod: (method, context) => {\n    // 自定义方法转换逻辑\n    return method;\n  },\n  transformClass: (cls, context) => {\n    // 自定义类转换逻辑\n    return cls;\n  },\n  postProcess: (javaCode, context) => {\n    // 后处理生成的 Java 代码\n    return javaCode;\n  },\n};\n```\n\n详细文档请参考 [PLUGIN_DEVELOPMENT.md](./PLUGIN_DEVELOPMENT.md)。\n\n## 增量生成\n\n代码生成器支持增量生成，基于文件哈希缓存：\n\n### 工作原理\n\n1. 计算源文件的 SHA-256 哈希值\n2. 与缓存中的哈希值比较\n3. 仅重新生成变更的文件\n4. 自动清理 7 天以上的过期缓存\n\n### 使用方法\n\n```bash\n# 启用增量生成\naiko-codegen transpile ./src --out ./gen --package com.example --incremental\n```\n\n### 缓存文件\n\n缓存文件存储在 `.codegen-cache.json`，包含：\n\n```json\n{\n  \"path/to/file.ts\": {\n    \"hash\": \"abc123...\",\n    \"timestamp\": 1234567890\n  }\n}\n```\n\n## 错误处理\n\n代码生成器提供完善的错误处理：\n\n### 错误分类\n\n- **parse** - 语法解析错误\n- **type** - 类型错误\n- **other** - 其他错误\n\n### 错误报告\n\n错误信息会输出到 `codegen-errors.json`：\n\n```json\n[\n  {\n    \"file\": \"path/to/file.ts\",\n    \"error\": \"Error message\",\n    \"type\": \"parse\"\n  }\n]\n```\n\n## 测试\n\n运行测试：\n\n```bash\nnpm test\n```\n\n测试覆盖：\n\n- 解析器单元测试\n- 插件系统测试\n- 代码生成集成测试\n- 类型映射测试\n\n## API 文档\n\n详细的 API 文档请参考 [API.md](./API.md)。\n\n## 示例项目\n\n查看 [examples](./examples) 目录获取完整的示例项目：\n\n- [user-crud](./examples/user-crud) - 用户 CRUD 示例\n- [redis-cache](./examples/redis-cache) - Redis 缓存示例\n- [mq-demo](./examples/mq-demo) - 消息队列示例\n- [security-demo](./examples/security-demo) - 安全认证示例\n\n## 贡献\n\n欢迎贡献！请查看 [CONTRIBUTING.md](./CONTRIBUTING.md) 了解详情。\n\n## 许可证\n\nMIT\n\n## 联系方式\n\n- GitHub: https://github.com/ai-partner-x/ai-first-framework\n- Issues: https://github.com/ai-partner-x/ai-first-framework/issues\n","readmeFilename":"README.md"}