@damatjs/schema-codegen
v1.0.6
Published
Pure TypeScript and Zod source generation from Damat module schemas
Readme
@damatjs/schema-codegen
Pure TypeScript and Zod source generation from serialized Damat module schemas.
The package consumes ModuleSchema values from @damatjs/orm-type and returns
source strings or deterministic in-memory file maps. It performs no filesystem
I/O, model discovery, framework integration, or database access.
Native pgvector columns are rendered as number[]. vector(dimensions) and
halfVector(dimensions) schemas generate finite-number validators with the
declared exact length; missing or invalid dimensions fail generation.
Install
bun add @damatjs/schema-codegenQuick start
import { generateFilesMap, generateTypes } from "@damatjs/schema-codegen";
import type { ModuleSchema } from "@damatjs/orm-type";
const schema: ModuleSchema = {
moduleName: "store",
tables: [
{
name: "product",
columns: [
{ name: "id", type: "uuid", nullable: false, primaryKey: true },
{ name: "name", type: "text", nullable: false },
],
},
],
};
const combined = generateTypes(schema);
const files = generateFilesMap(schema);API
columnToTsTypeandcolumnToZodSchemarender individual columns.generateTypesandgenerateZodTypesrender combined module source.generateTableFileandgenerateZodFilerender one table.generateFilesMapreturns the file-per-table layout.generateEnumTypes,generateEnumsFile, andgetTableEnumsrender enums.generateRowInterface,generateNewType, andgenerateUpdateTyperender TypeScript fragments.generateNewZodSchema,generateUpdateZodSchema,generateQueryZodSchema,generateIdZodSchema, andgenerateParamsZodSchemarender focused Zod fragments.buildRelationMapandrelationFieldsrender loaded relation fields without overwriting concrete foreign-key columns.GenerationLoggeris the optional structuraldebug/infologging surface.
See the internals guide for the source layout and invariants. Detailed references cover generators and type mapping.
License
MIT
