@typegoose/typegoose
Version:
Define Mongoose models using TypeScript classes
80 lines (79 loc) • 12.7 kB
TypeScript
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 {};