跳到主要内容

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.*
  • 仅用于类型收窄的括号、assatisfies

局部变量、函数调用、箭头函数、对象展开、计算属性名和其他动态表达式会直接报错;错误包含文件路径、行和列。配置文件仍按现有合同由 jiti 执行。

输出所有权

每个 outDir 会写入 .rxdb-client-generator-manifest.json。后续生成只删除旧 manifest 中存在、但本次不再生成的文件;手写文件和其他工具输出不会被清理。损坏或越界的 manifest 会直接报错,不会静默忽略。

Fileoverview

RxDB Client Generator RxDB 客户端代码生成器,从实体元数据生成类型定义和实体类代码

主要功能:

  • 从 EntityMetadata 生成 .d.ts 类型定义文件
  • 生成实体类的 .js 文件(使用装饰器)
  • 支持分文件(splitFiles)和单文件两种生成模式
  • 支持 TreeRepository 等扩展 Repository 类型

Classes

ClassDescription
RepositoryGeneratorBase基础 Repository 生成器(抽象基类) 提供通用工具方法,子类继承后生成各自的 Repository 属性和方法
RxDBClientGeneratorRxDB Client 生成器

Interfaces

InterfaceDescription
GeneratorContextGenerator 上下文 包含生成属性和方法所需的所有上下文信息
IRepositoryGeneratorRepository 生成器接口
RxDBClientGeneratorOptions-
SourceFile源文件接口

Variables

VariableDescription
NAMESPACE_PUBLIC-
REPOSITORY_TYPE_GRAPH_REPOSITORY-
REPOSITORY_TYPE_REPOSITORY-
REPOSITORY_TYPE_TREE_REPOSITORY-