// Type definitions for Mongoose 3.8.5
// Project: http://mongoosejs.com/
// Definitions by: horiuchi
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
///
declare module "mongoose" {
function connect(uri: string, options?: ConnectionOptions , callback?: (err: any) => void): Mongoose;
function createConnection(): Connection;
function createConnection(uri: string, options?: ConnectionOptions): Connection;
function createConnection(host: string, database_name: string, port?: number, options?: ConnectionOptions): Connection;
function disconnect(callback?: (err?: any) => void): Mongoose;
function model(name: string, schema?: Schema, collection?: string, skipInit?: boolean): Model;
function modelNames(): string[];
function plugin(plugin: (schema: Schema, options?: Object) => void, options?: Object): Mongoose;
function get(key: string): any;
function set(key: string, value: any): void;
var mongo: any;
var mquery: any;
var version: string;
var connection: Connection;
export class Mongoose {
connect(uri: string, options?: ConnectOpenOptionsBase, callback?: (err: any) => void): Mongoose;
createConnection(): Connection;
createConnection(uri: string, options?: Object): Connection;
createConnection(host: string, database_name: string, port?: number, options?: ConnectOpenOptionsBase): Connection;
disconnect(callback?: (err?: any) => void): Mongoose;
get(key: string): any;
model(name: string, schema?: Schema, collection?: string, skipInit?: boolean): Model;
modelNames(): string[];
plugin(plugin: (schema: Schema, options?: Object) => void, options?: Object): Mongoose;
set(key: string, value: any): void;
mongo: any;
mquery: any;
version: string;
connection: Connection;
Promise: any;
}
export interface Connection extends NodeJS.EventEmitter {
constructor(base: Mongoose): Connection;
close(callback?: (err: any) => void): Connection;
collection(name: string, options?: Object): Collection;
model(name: string, schema?: Schema, collection?: string): Model;
modelNames(): string[];
open(host: string, database?: string, port?: number, options?: OpenSetConnectionOptions, callback?: (err: any) => void): Connection;
openSet(uris: string, database?: string, options?: OpenSetConnectionOptions, callback?: (err: any) => void): Connection;
db: any;
collections: {[index: string]: Collection};
readyState: number;
}
export interface ConnectOpenOptionsBase {
db?: any;
server?: any;
replset?: any;
/** Username for authentication if not supplied in the URI. */
user?: string;
/** Password for authentication if not supplied in the URI. */
pass?: string;
/** Options for authentication */
auth?: any;
}
export interface ConnectionOptions extends ConnectOpenOptionsBase {
/** Passed to the underlying driver's Mongos instance. */
mongos?: MongosOptions;
}
interface OpenSetConnectionOptions extends ConnectOpenOptionsBase {
/** If true, enables High Availability support for mongos */
mongos?: boolean;
}
interface MongosOptions {
/** Turn on high availability monitoring. (default: true) */
ha?: boolean;
/** Time between each replicaset status check. (default: 5000) */
haInterval?: number;
/**
* Number of connections in the connection pool for each
* server instance. (default: 5 (for legacy reasons)) */
poolSize?: number;
/**
* Use ssl connection (needs to have a mongod server with
* ssl support). (default: false).
*/
ssl?: boolean;
/**
* Validate mongod server certificate against ca
* (needs to have a mongod server with ssl support, 2.4 or higher)
* (default: true)
*/
sslValidate?: boolean;
/** Turn on high availability monitoring. */
sslCA?: (Buffer|string)[];
sslKey?: Buffer|string;
sslPass?: Buffer|string;
socketOptions?: {
noDelay?: boolean;
keepAlive?: number;
connectionTimeoutMS?: number;
socketTimeoutMS?: number;
};
}
export interface Collection {
//http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#initializeOrderedBulkOp
initializeOrderedBulkOp(options?: CollectionOptions): OrderedBulkOperation;
//http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#initializeUnorderedBulkOp
initializeUnorderedBulkOp(options?: CollectionOptions): UnorderedBulkOperation;
}
export interface CollectionOptions {
//The write concern.
w?: number | string;
//The write concern timeout.
wtimeout?: number;
//Specify a journal write concern.
j?: boolean;
}
//http://mongodb.github.io/node-mongodb-native/2.1/api/OrderedBulkOperation.html
export interface OrderedBulkOperation {
length: number;
//http://mongodb.github.io/node-mongodb-native/2.1/api/OrderedBulkOperation.html#execute
execute(callback: MongoCallback): void;
execute(options?: FSyncOptions): Promise;
execute(options: FSyncOptions, callback: MongoCallback): void;
//http://mongodb.github.io/node-mongodb-native/2.1/api/OrderedBulkOperation.html#find
find(selector: Object): FindOperatorsOrdered;
//http://mongodb.github.io/node-mongodb-native/2.1/api/OrderedBulkOperation.html#insert
insert(doc: Object): OrderedBulkOperation;
}
//http://mongodb.github.io/node-mongodb-native/2.1/api/UnorderedBulkOperation.html
export interface UnorderedBulkOperation {
//http://mongodb.github.io/node-mongodb-native/2.1/api/UnorderedBulkOperation.html#execute
execute(callback: MongoCallback): void;
execute(options?: FSyncOptions): Promise;
execute(options: FSyncOptions, callback: MongoCallback): void;
//http://mongodb.github.io/node-mongodb-native/2.1/api/UnorderedBulkOperation.html#find
find(selector: Object): FindOperatorsUnordered;
//http://mongodb.github.io/node-mongodb-native/2.1/api/UnorderedBulkOperation.html#insert
insert(doc: Object): UnorderedBulkOperation;
}
export interface MongoCallback {
(error: MongoError, result: T): void;
}
// http://mongodb.github.io/node-mongodb-native/2.1/api/MongoError.html
export class MongoError extends Error {
constructor(message: string);
static create(options: Object): MongoError;
}
//http://mongodb.github.io/node-mongodb-native/2.1/api/BulkWriteResult.html
export interface BulkWriteResult {
ok: number;
nInserted: number;
nUpdated: number;
nUpserted: number;
nModified: number;
nRemoved: number;
getInsertedIds(): Array