@negors/interface-generator
v1.1.0
Published
Tool to generate Typescript interfaces from Sequelize models, Mongoose schemas, and TypeOrm entities. (for now)
Maintainers
Readme
Interface Generator CLI
Generate TypeScript interfaces from model or schema files (currently supports mongoose Schemas, TypeOrm entities and Sequelize models).
Disclaimer: This tool is currently under development. Features and output may change. Please review generated interfaces before using them in production.
Installation
Install the CLI globally:
npm install -g @negors/interface-generatorTo get the latest (possibly unstable) version:
npm install -g @negors/interface-generator@latestUsage
Run the main command from any path.
genInt from <path/to/schema.js> -o <path/to/output/interface.ts>Example
genInt from test/user.schema.ts -o test/user.interface.tsNote After running the command, the CLI will prompt you to select which ORM or ODM you want to use (Mongoose, TypeORM, Sequelize).
Options
from <filePath>: Path to the schema/model file.-o, --output <output>: Path to the output file for the generated interface.
Supports
- Mongoose schemas (including basic types, arrays, enums, nested objects, Map, Mixed, ObjectId, etc.)
- TypeOrm entities
- Sequelize models
Example supported schema
export const UserSchema = new Schema({
name: { type: String, required: true },
age: { type: Number },
tags: [String],
meta: {
votes: Number,
favs: Number,
},
ratingsByCategory: { type: Map, of: Number },
metadata: { type: Schema.Types.Mixed },
owner: { type: Schema.Types.ObjectId, ref: "User" },
});Generated output
export interface IUser {
name: string;
age?: number;
tags: string[];
meta: { votes: number; favs: number };
ratingsByCategory: Record<string, number>;
metadata: any;
owner: Types.ObjectId;
}For questions or suggestions, open an issue in the repository.
