import * as mongoose from 'mongoose'; const esmcSchemaMeta = { name: String, owner: [String], main: String, deps: [String], majorVersion: Number, minorVersion: Number, patchVersion: Number, desc: String, exts: [String], }; export const EsmcSchema = (mg: typeof mongoose) => new mg.Schema(esmcSchemaMeta, { timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' }, }); export type EsmcI = GenMongooseModalI; type BooleanTypeObjI = { type: BooleanConstructor; default: boolean; }; export type GenMongooseModalI = { [K in keyof T]: T[K] extends StringConstructor ? string : T[K] extends StringConstructor[] ? string[] : T[K] extends DateConstructor ? Date : T[K] extends BooleanTypeObjI ? boolean : any; } & { _id: any; };