Skip to content

Commit

Permalink
chore: add typescript types. fixes #338 (#339)
Browse files Browse the repository at this point in the history
  • Loading branch information
guyellis authored and mingchuno committed Oct 28, 2019
1 parent 4ebb0c6 commit 226fe7a
Show file tree
Hide file tree
Showing 2 changed files with 120 additions and 1 deletion.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,6 @@
"eslint --fix",
"git add"
]
}
},
"types": "src/types.d.ts"
}
118 changes: 118 additions & 0 deletions src/types.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
// Type definitions for connect-mongo 3.1
// Project: https://github.com/kcbanner/connect-mongo
// Definitions by: Mizuki Yamamoto <https://github.com/Syati>
// Guy Ellis <https://github.com/guyellis>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 3.0

/// <reference types="express-session" />

import * as express from 'express';
import * as mongoose from 'mongoose';
import * as mongodb from 'mongodb';
import * as session from 'express-session';

declare function connectMongo(connect: (options?: session.SessionOptions) => express.RequestHandler): connectMongo.MongoStoreFactory;

declare namespace connectMongo {

export interface DefaultOptions {
/**
* The hostname of the database you are connecting to.
* (Default: '127.0.0.1')
*/
host?: string;

/**
* The port number to connect to.
* (Default: 27017)
*/
port?: string;

/**
* (Default: false)
*/
autoReconnect?: boolean;

/**
* (Default: true)
*/
ssl?: boolean;

/**
* (Default: 1)
*/
w?: number;

/**
* The colletion of the database you are connecting to.
* (Default: sessions)
*/
collection?: string;

/**
* Serialize sessions using JSON.stringify and deserialize them with JSON.parse.
* (Default: true)
*/
stringify?: boolean;

/**
* Default: false
*/
hash?: boolean;

/**
* Default: 14 days (60 * 60 * 24 * 14)
*/
ttl?: number;

/**
* Automatically remove expired sessions.
* (Default: 'native')
*/
autoRemove?: string;

/**
* (Default: 10)
*/
autoRemoveInterval?: number;

/**
* don't save session if unmodified
*/
touchAfter?: number;
}

export interface MongoUrlOptions extends DefaultOptions {
url: string;
mongoOptions?: mongoose.ConnectionOptions;
}

export interface MongooseConnectionOptions extends DefaultOptions {
mongooseConnection: mongoose.Connection;
}

export interface NativeMongoOptions extends DefaultOptions {
client: mongodb.MongoClient;
}

export interface NativeMongoPromiseOptions extends DefaultOptions {
clientPromise: Promise<mongodb.MongoClient>;
}

export interface MongoStoreFactory {
new(options: MongoUrlOptions | MongooseConnectionOptions | NativeMongoOptions | NativeMongoPromiseOptions): MongoStore;
}

export class MongoStore extends session.Store {
get: (sid: string, callback: (err: any, session: Express.SessionData | null) => void) => void;
set: (sid: string, session: Express.SessionData, callback?: (err: any) => void) => void;
destroy: (sid: string, callback?: (err: any) => void) => void;
length: (callback: (err: any, length: number) => void) => void;
clear: (callback?: (err?: any) => void) => void;
touch: (sid: string, session: Express.SessionData, callback?: (err: any) => void) => void;
close: () => void;
}
}

export = connectMongo;

0 comments on commit 226fe7a

Please sign in to comment.