Header files for Mongoose' 'plugin' method (extending via .methods and .statics)
Declare interfaces in passport-local-mongoose.d.ts
file:
declare module 'mongoose' { // methods export interface PassportLocalDocument extends Document { setPassword(pass: string, cb: (err: any) => void); } // statics export interface PassportLocalModel<T extends PassportLocalDocument> extends Model<T> { authenticate(username: string, password: string, cb: (err: any) => void); } // plugin options export interface PassportLocalOptions { usernameField?: string; usernameLowerCase?: boolean; } export interface PassportLocalSchema extends Schema { plugin( plugin: (schema: PassportLocalSchema, options?: PassportLocalOptions) => void, options?: PassportLocalOptions): Schema; } export function model<T extends PassportLocalDocument>( name: string, schema?: PassportLocalSchema, collection?: string, skipInit?: boolean): PassportLocalModel<T>;}declare module 'passport-local-mongoose' { import mongoose = require('mongoose'); var _: (schema: mongoose.Schema, Options?: Object) => void; export = _;}
Use it in your app.ts
:
import mongoose = require('mongoose');import passportLocalMongoose = require('passport-local-mongoose');interface UserDocument extends mongoose.PassportLocalDocument { email: string, password: string;}var userSchema = <mongoose.PassportLocalSchema>new mongoose.Schema({ email: String, password: String});userSchema.plugin(passportLocalMongoose, { usernameField: 'email', usernameLowerCase: true});var User = mongoose.model<UserDocument>('User', userSchema);User.authenticate(userName, pass, cb);var user = new User();user.setPassword(newPass, cb);