From 5c61b5a79c48e1ef475d758c788a69e2a9f914ba Mon Sep 17 00:00:00 2001 From: mizuki-y Date: Sun, 4 Oct 2015 17:59:05 +0900 Subject: [PATCH 1/2] Add connect-mongo definition --- connect-mongo/connect-mongo-tests.ts | 46 +++++++++++ connect-mongo/connect-mongo.d.ts | 112 +++++++++++++++++++++++++++ 2 files changed, 158 insertions(+) create mode 100644 connect-mongo/connect-mongo-tests.ts create mode 100644 connect-mongo/connect-mongo.d.ts diff --git a/connect-mongo/connect-mongo-tests.ts b/connect-mongo/connect-mongo-tests.ts new file mode 100644 index 000000000..018aeea2f --- /dev/null +++ b/connect-mongo/connect-mongo-tests.ts @@ -0,0 +1,46 @@ +/// + +import * as express from 'express'; +import * as mongoose from 'mongoose'; +import * as session from 'express-session'; +import * as connectMongo from 'connect-mongo'; +import * as mongodb from 'mongodb'; + +var app = express(); + +/// Create MongoStore +var MongoStore = connectMongo(session); + +/// Use MongoStore + +// MongoUrlOptions +app.use(session({ + secret: 'secret', + store: new MongoStore({url: 'mongodb://localhost/test'}) +})); + + +app.use(session({ + secret: 'secret', + store: new MongoStore({ + url: 'mongodb://localhost/test', + collection: "test-sessions", + ttl: 30 * 24 * 60 * 60 // = 30 days + }) +})); + +// MongooseConnectionOptions +mongoose.connect('mongodb://localhost/test') +app.use(session({ + secret: 'secret', + store: new MongoStore({mongooseConnection: mongoose.connection}) +})); + +// NativeMongoOptions +var Db = mongodb.Db +var Server = mongodb.Server +var mongoDb = new Db('test', new Server('localhost', 27017)); +app.use(session({ + secret: 'secret', + store: new MongoStore({db: mongoDb}) +})); diff --git a/connect-mongo/connect-mongo.d.ts b/connect-mongo/connect-mongo.d.ts new file mode 100644 index 000000000..4aa1a75cc --- /dev/null +++ b/connect-mongo/connect-mongo.d.ts @@ -0,0 +1,112 @@ +// Type definitions for connect-mongo +// Project: https://github.com/kcbanner/connect-mongo +// Definitions by: Mizuki Yamamoto +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// +/// +/// + +declare module "connect-mongo" { + import * as express from 'express'; + import * as mongoose from 'mongoose'; + import * as mongodb from 'mongodb'; + import * as session from 'express-session'; + + function connectMongo(connect: (options?: session.SessionOptions) => express.RequestHandler): connectMongo.MongoStoreFactory; + + module 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; + } + + export interface MongoUrlOptions extends DefaultOptions { + url: string; + mongoOptions?: mongoose.ConnectionOptions; + } + + export interface MogooseConnectionOptions extends DefaultOptions { + mongooseConnection: mongoose.Connection; + } + + export interface NaitiveMongoOptions extends DefaultOptions { + db: mongodb.Db; + } + + export interface MongoStoreFactory { + new (options: MongoUrlOptions): MongoStore; + new (options: MogooseConnectionOptions): MongoStore; + new (options: NaitiveMongoOptions): MongoStore; + } + + export class MongoStore implements session.Store { + get: (sid: string, callback: (err: any, session: Express.Session) => void) => void; + set: (sid: string, session: Express.Session, 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.Session, callback:(err: any) => void) => void; + } + } + + export = connectMongo; +} From 80b49400df535db762f4c5c592a6fbf98420b04c Mon Sep 17 00:00:00 2001 From: mizuki-y Date: Sun, 4 Oct 2015 18:45:44 +0900 Subject: [PATCH 2/2] Fix reference path --- connect-mongo/connect-mongo.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/connect-mongo/connect-mongo.d.ts b/connect-mongo/connect-mongo.d.ts index 4aa1a75cc..ece75973a 100644 --- a/connect-mongo/connect-mongo.d.ts +++ b/connect-mongo/connect-mongo.d.ts @@ -3,9 +3,10 @@ // Definitions by: Mizuki Yamamoto // Definitions: https://github.com/borisyankov/DefinitelyTyped +/// /// -/// /// +/// declare module "connect-mongo" { import * as express from 'express';