rxdb-client-generator
RxDB 客户端代码生成器,从实体定义生成 JavaScript 实体入口和 TypeScript 声明。
功能
- 生成单文件或按实体拆分的客户端代码
- 生成 RxDB、Repository、关系和查询规则类型
- 提供 CLI 与 Vite 插件
- 使用 manifest 只清理由生成器拥有的陈旧输出,不删除输出目录中的其他文件
安装
pnpm add -D @aiao/rxdb-client-generator
CLI
rxdb-client-generator ./rxdb.config.ts
配置文件由 jiti 执行,可以导出一个配置或配置数组:
export default {
entities: ['./src/entities/**/*.ts'],
outDir: './src/generated',
relationQueryDeep: 3,
splitFiles: true
};
路径相对于配置文件解析。多个输出目录可以并行生成;同一输出目录会串行执行,避免 manifest 和文件写入竞态。
Vite 插件
单配置:
import { rxdbClientGeneratorVitePlugin } from '@aiao/rxdb-client-generator/vite';
export default {
plugins: [
rxdbClientGeneratorVitePlugin({
entities: ['./src/entities/**/*.ts'],
outDir: './src/generated'
})
]
};
多配置:
rxdbClientGeneratorVitePlugin([
{
entities: ['./src/entities/**/*.ts'],
outDir: './src/generated'
},
{
entities: ['./src/admin/**/*.ts'],
outDir: './src/generated-admin'
}
]);
实体元数据安全边界
实体扫描不会执行装饰器参数。@Entity、@TreeEntity、@GraphEntity 的参数必须是可静态求值的内联对象,只允许:
- 对象、数组
- 字符串、数字、布尔值、
null PropertyType.*、RelationKind.*、OnDeleteAction.*- 仅用于类型收窄的括号、
as、satisfies
局部变量、函数调用、箭头函数、对象展开、计算属性名和其他动态表达式会直接报错;错误包含文件路径、行和列。配置文件仍按现有合同由 jiti 执行。
输出所有权
每个 outDir 会写入 .rxdb-client-generator-manifest.json。后续生成只删除旧 manifest 中存在、但本次不再生成的文件;手写文件和其他工具输出不会被清理。损坏或越界的 manifest 会直接报错,不会静默忽略。
Fileoverview
RxDB Client Generator RxDB 客户端代码生成器,从实体元数据生成类型定义和实体类代码
主要功能:
- 从 EntityMetadata 生成 .d.ts 类型定义文件
- 生成实体类的 .js 文件(使用装饰器)
- 支持分文件(splitFiles)和单文件两种生成模式
- 支持 TreeRepository 等扩展 Repository 类型
Classes
| Class | Description |
|---|---|
| RepositoryGeneratorBase | 基础 Repository 生成器(抽象基类) 提供通用工具方法,子类继承后生成各自的 Repository 属性和方法 |
| RxDBClientGenerator | RxDB Client 生成器 |
Interfaces
| Interface | Description |
|---|---|
| GeneratorContext | Generator 上下文 包含生成属性和方法所需的所有上下文信息 |
| IRepositoryGenerator | Repository 生成器接口 |
| RxDBClientGeneratorOptions | - |
| SourceFile | 源文件接口 |
Variables
| Variable | Description |
|---|---|
| NAMESPACE_PUBLIC | - |
| REPOSITORY_TYPE_GRAPH_REPOSITORY | - |
| REPOSITORY_TYPE_REPOSITORY | - |
| REPOSITORY_TYPE_TREE_REPOSITORY | - |