UNPKG

@typegoose/typegoose

Version:

Define Mongoose models using TypeScript classes

80 lines (79 loc) 12.7 kB
import type { Aggregate, AggregateExtract, CallbackError, Document, DocumentOrQueryMiddleware, ErrorHandlingMiddlewareFunction, HydratedDocument, Model, MongooseDocumentMiddleware, MongooseQueryMiddleware, PostMiddlewareFunction, PreMiddlewareFunction, PreSaveMiddlewareFunction, Query, SchemaPostOptions, SchemaPreOptions } from 'mongoose'; import type { AnyParamConstructor, DocumentType, ReturnModelType } from './types'; /** Type copied from mongoose, because it is not exported but used in hooks */ type QueryResultType<T> = T extends Query<infer ResultType, any> ? ResultType : never; export declare const pre: { <S extends unknown, T = S extends Document<any, any, any> ? S : HydratedDocument<DocumentType<S, import("./types").BeAnObject>, any, {}>>(method: DocumentOrQueryMiddleware | DocumentOrQueryMiddleware[], fn: PreMiddlewareFunction<T>, options: SchemaPreOptions & { document: true; query: false; }): ClassDecorator; <S_1 extends object | Query<any, any, {}, any>, T_1 = S_1 extends Query<any, any, {}, any> ? S_1 : Query<DocumentType<S_1, import("./types").BeAnObject>, DocumentType<S_1, import("./types").BeAnObject>, {}, DocumentType<S_1, import("./types").BeAnObject>>>(method: DocumentOrQueryMiddleware | DocumentOrQueryMiddleware[], fn: PreMiddlewareFunction<T_1>, options: SchemaPreOptions & { document: false; query: true; }): ClassDecorator; <S_2 extends unknown, T_2 = S_2 extends Document<any, any, any> ? S_2 : HydratedDocument<DocumentType<S_2, import("./types").BeAnObject>, any, {}>>(method: 'save', fn: PreSaveMiddlewareFunction<T_2>, options?: SchemaPreOptions): ClassDecorator; <S_3 extends object | Query<any, any, {}, any>, T_3 = S_3 extends Query<any, any, {}, any> ? S_3 : Query<DocumentType<S_3, import("./types").BeAnObject>, DocumentType<S_3, import("./types").BeAnObject>, {}, DocumentType<S_3, import("./types").BeAnObject>>>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, fn: PreMiddlewareFunction<T_3>, options?: SchemaPreOptions): ClassDecorator; <S_4 extends unknown, T_4 = S_4 extends Document<any, any, any> ? S_4 : HydratedDocument<DocumentType<S_4, import("./types").BeAnObject>, any, {}>>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, fn: PreMiddlewareFunction<T_4>, options?: SchemaPreOptions): ClassDecorator; <T_5 extends Aggregate<any>>(method: 'aggregate' | RegExp, fn: PreMiddlewareFunction<T_5>, options?: SchemaPreOptions): ClassDecorator; <S_5 extends Model<any, {}, {}, {}, any> | AnyParamConstructor<any>, T_6 = S_5 extends Model<any, {}, {}, {}, any> ? S_5 : ReturnModelType<S_5, import("./types").BeAnObject>>(method: 'insertMany' | RegExp, fn: (this: T_6, next: (err?: CallbackError) => void, docs: any | Array<any>) => void | Promise<void>, options?: SchemaPreOptions): ClassDecorator; }; export declare const post: { <S extends object | Query<any, any, {}, any>, T = S extends Query<any, any, {}, any> ? S : Query<DocumentType<S, import("./types").BeAnObject>, DocumentType<S, import("./types").BeAnObject>, {}, DocumentType<S, import("./types").BeAnObject>>>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, fn: ErrorHandlingMiddlewareFunction<T, any>, options: SchemaPostOptions & { errorHandler: true; }): ClassDecorator; <S_1 extends unknown, T_1 = S_1 extends Document<any, any, any> ? S_1 : HydratedDocument<DocumentType<S_1, import("./types").BeAnObject>, any, {}>>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, fn: ErrorHandlingMiddlewareFunction<T_1, any>, options: SchemaPostOptions & { errorHandler: true; }): ClassDecorator; <T_2 extends Aggregate<any>>(method: 'aggregate' | RegExp, fn: ErrorHandlingMiddlewareFunction<T_2, any[]>, options: SchemaPostOptions & { errorHandler: true; }): ClassDecorator; <S_2 extends Model<any, {}, {}, {}, any> | AnyParamConstructor<any>, T_3 = S_2 extends Model<any, {}, {}, {}, any> ? S_2 : ReturnModelType<S_2, import("./types").BeAnObject>>(method: 'insertMany' | RegExp, fn: ErrorHandlingMiddlewareFunction<T_3, any>, options: SchemaPostOptions & { errorHandler: true; }): ClassDecorator; <S_3 extends object | Query<any, any, {}, any>, T_4 = S_3 extends Query<any, any, {}, any> ? S_3 : Query<DocumentType<S_3, import("./types").BeAnObject>, DocumentType<S_3, import("./types").BeAnObject>, {}, DocumentType<S_3, import("./types").BeAnObject>>>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, fn: PostMiddlewareFunction<T_4, QueryResultType<T_4>>, options?: SchemaPostOptions): ClassDecorator; <S_4 extends unknown, T_5 = S_4 extends Document<any, any, any> ? S_4 : HydratedDocument<DocumentType<S_4, import("./types").BeAnObject>, any, {}>>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, fn: PostMiddlewareFunction<T_5, T_5>, options?: SchemaPostOptions): ClassDecorator; <T_6 extends Aggregate<any>>(method: 'aggregate' | RegExp, fn: PostMiddlewareFunction<T_6, AggregateExtract<T_6>[]>, options?: SchemaPostOptions): ClassDecorator; <S_5 extends Model<any, {}, {}, {}, any> | AnyParamConstructor<any>, T_7 = S_5 extends Model<any, {}, {}, {}, any> ? S_5 : ReturnModelType<S_5, import("./types").BeAnObject>>(method: 'insertMany' | RegExp, fn: PostMiddlewareFunction<T_7, T_7>, options?: SchemaPostOptions): ClassDecorator; <S_6 extends object | Query<any, any, {}, any>, T_8 = S_6 extends Query<any, any, {}, any> ? S_6 : Query<DocumentType<S_6, import("./types").BeAnObject>, DocumentType<S_6, import("./types").BeAnObject>, {}, DocumentType<S_6, import("./types").BeAnObject>>>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, fn: ErrorHandlingMiddlewareFunction<T_8, any>, options?: SchemaPostOptions): ClassDecorator; <S_7 extends unknown, T_9 = S_7 extends Document<any, any, any> ? S_7 : HydratedDocument<DocumentType<S_7, import("./types").BeAnObject>, any, {}>>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, fn: ErrorHandlingMiddlewareFunction<T_9, any>, options?: SchemaPostOptions): ClassDecorator; <T_10 extends Aggregate<any>>(method: 'aggregate' | RegExp, fn: ErrorHandlingMiddlewareFunction<T_10, any[]>, options?: SchemaPostOptions): ClassDecorator; <S_8 extends Model<any, {}, {}, {}, any> | AnyParamConstructor<any>, T_11 = S_8 extends Model<any, {}, {}, {}, any> ? S_8 : ReturnModelType<S_8, import("./types").BeAnObject>>(method: 'insertMany' | RegExp, fn: ErrorHandlingMiddlewareFunction<T_11, any>, options?: SchemaPostOptions): ClassDecorator; }; export declare const Pre: { <S extends unknown, T = S extends Document<any, any, any> ? S : HydratedDocument<DocumentType<S, import("./types").BeAnObject>, any, {}>>(method: DocumentOrQueryMiddleware | DocumentOrQueryMiddleware[], fn: PreMiddlewareFunction<T>, options: SchemaPreOptions & { document: true; query: false; }): ClassDecorator; <S_1 extends object | Query<any, any, {}, any>, T_1 = S_1 extends Query<any, any, {}, any> ? S_1 : Query<DocumentType<S_1, import("./types").BeAnObject>, DocumentType<S_1, import("./types").BeAnObject>, {}, DocumentType<S_1, import("./types").BeAnObject>>>(method: DocumentOrQueryMiddleware | DocumentOrQueryMiddleware[], fn: PreMiddlewareFunction<T_1>, options: SchemaPreOptions & { document: false; query: true; }): ClassDecorator; <S_2 extends unknown, T_2 = S_2 extends Document<any, any, any> ? S_2 : HydratedDocument<DocumentType<S_2, import("./types").BeAnObject>, any, {}>>(method: 'save', fn: PreSaveMiddlewareFunction<T_2>, options?: SchemaPreOptions): ClassDecorator; <S_3 extends object | Query<any, any, {}, any>, T_3 = S_3 extends Query<any, any, {}, any> ? S_3 : Query<DocumentType<S_3, import("./types").BeAnObject>, DocumentType<S_3, import("./types").BeAnObject>, {}, DocumentType<S_3, import("./types").BeAnObject>>>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, fn: PreMiddlewareFunction<T_3>, options?: SchemaPreOptions): ClassDecorator; <S_4 extends unknown, T_4 = S_4 extends Document<any, any, any> ? S_4 : HydratedDocument<DocumentType<S_4, import("./types").BeAnObject>, any, {}>>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, fn: PreMiddlewareFunction<T_4>, options?: SchemaPreOptions): ClassDecorator; <T_5 extends Aggregate<any>>(method: 'aggregate' | RegExp, fn: PreMiddlewareFunction<T_5>, options?: SchemaPreOptions): ClassDecorator; <S_5 extends Model<any, {}, {}, {}, any> | AnyParamConstructor<any>, T_6 = S_5 extends Model<any, {}, {}, {}, any> ? S_5 : ReturnModelType<S_5, import("./types").BeAnObject>>(method: 'insertMany' | RegExp, fn: (this: T_6, next: (err?: CallbackError) => void, docs: any | Array<any>) => void | Promise<void>, options?: SchemaPreOptions): ClassDecorator; }; export declare const Post: { <S extends object | Query<any, any, {}, any>, T = S extends Query<any, any, {}, any> ? S : Query<DocumentType<S, import("./types").BeAnObject>, DocumentType<S, import("./types").BeAnObject>, {}, DocumentType<S, import("./types").BeAnObject>>>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, fn: ErrorHandlingMiddlewareFunction<T, any>, options: SchemaPostOptions & { errorHandler: true; }): ClassDecorator; <S_1 extends unknown, T_1 = S_1 extends Document<any, any, any> ? S_1 : HydratedDocument<DocumentType<S_1, import("./types").BeAnObject>, any, {}>>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, fn: ErrorHandlingMiddlewareFunction<T_1, any>, options: SchemaPostOptions & { errorHandler: true; }): ClassDecorator; <T_2 extends Aggregate<any>>(method: 'aggregate' | RegExp, fn: ErrorHandlingMiddlewareFunction<T_2, any[]>, options: SchemaPostOptions & { errorHandler: true; }): ClassDecorator; <S_2 extends Model<any, {}, {}, {}, any> | AnyParamConstructor<any>, T_3 = S_2 extends Model<any, {}, {}, {}, any> ? S_2 : ReturnModelType<S_2, import("./types").BeAnObject>>(method: 'insertMany' | RegExp, fn: ErrorHandlingMiddlewareFunction<T_3, any>, options: SchemaPostOptions & { errorHandler: true; }): ClassDecorator; <S_3 extends object | Query<any, any, {}, any>, T_4 = S_3 extends Query<any, any, {}, any> ? S_3 : Query<DocumentType<S_3, import("./types").BeAnObject>, DocumentType<S_3, import("./types").BeAnObject>, {}, DocumentType<S_3, import("./types").BeAnObject>>>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, fn: PostMiddlewareFunction<T_4, QueryResultType<T_4>>, options?: SchemaPostOptions): ClassDecorator; <S_4 extends unknown, T_5 = S_4 extends Document<any, any, any> ? S_4 : HydratedDocument<DocumentType<S_4, import("./types").BeAnObject>, any, {}>>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, fn: PostMiddlewareFunction<T_5, T_5>, options?: SchemaPostOptions): ClassDecorator; <T_6 extends Aggregate<any>>(method: 'aggregate' | RegExp, fn: PostMiddlewareFunction<T_6, AggregateExtract<T_6>[]>, options?: SchemaPostOptions): ClassDecorator; <S_5 extends Model<any, {}, {}, {}, any> | AnyParamConstructor<any>, T_7 = S_5 extends Model<any, {}, {}, {}, any> ? S_5 : ReturnModelType<S_5, import("./types").BeAnObject>>(method: 'insertMany' | RegExp, fn: PostMiddlewareFunction<T_7, T_7>, options?: SchemaPostOptions): ClassDecorator; <S_6 extends object | Query<any, any, {}, any>, T_8 = S_6 extends Query<any, any, {}, any> ? S_6 : Query<DocumentType<S_6, import("./types").BeAnObject>, DocumentType<S_6, import("./types").BeAnObject>, {}, DocumentType<S_6, import("./types").BeAnObject>>>(method: MongooseQueryMiddleware | MongooseQueryMiddleware[] | RegExp, fn: ErrorHandlingMiddlewareFunction<T_8, any>, options?: SchemaPostOptions): ClassDecorator; <S_7 extends unknown, T_9 = S_7 extends Document<any, any, any> ? S_7 : HydratedDocument<DocumentType<S_7, import("./types").BeAnObject>, any, {}>>(method: MongooseDocumentMiddleware | MongooseDocumentMiddleware[] | RegExp, fn: ErrorHandlingMiddlewareFunction<T_9, any>, options?: SchemaPostOptions): ClassDecorator; <T_10 extends Aggregate<any>>(method: 'aggregate' | RegExp, fn: ErrorHandlingMiddlewareFunction<T_10, any[]>, options?: SchemaPostOptions): ClassDecorator; <S_8 extends Model<any, {}, {}, {}, any> | AnyParamConstructor<any>, T_11 = S_8 extends Model<any, {}, {}, {}, any> ? S_8 : ReturnModelType<S_8, import("./types").BeAnObject>>(method: 'insertMany' | RegExp, fn: ErrorHandlingMiddlewareFunction<T_11, any>, options?: SchemaPostOptions): ClassDecorator; }; export {};