diff --git a/types/koa-generic-session/index.d.ts b/types/koa-generic-session/index.d.ts
index f3a84e7b20..d5a616b248 100644
--- a/types/koa-generic-session/index.d.ts
+++ b/types/koa-generic-session/index.d.ts
@@ -1,6 +1,6 @@
// Type definitions for koa-generic-session 1.x
// Project: https://github.com/koajs/generic-session
-// Definitions by: Nick Simmons
+// Definitions by: Nick Simmons , Ragg
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
import * as Koa from "koa";
@@ -8,6 +8,7 @@ import * as Koa from "koa";
declare namespace koaSession {
interface Session {
cookie: any;
+ [key: string]: any;
}
interface SessionIdStore {
@@ -50,5 +51,13 @@ declare namespace koaSession {
const MemoryStore: SessionStore;
}
+declare module 'koa' {
+ interface Context {
+ session: koaSession.Session|null;
+ sessionSave: boolean|null;
+ regenerateSession(): Generator;
+ }
+}
+
declare function koaSession(options: koaSession.SessionOptions): Koa.Middleware;
export = koaSession;
diff --git a/types/koa-generic-session/koa-generic-session-tests.ts b/types/koa-generic-session/koa-generic-session-tests.ts
index fb8d69b0e0..a00e7f5384 100644
--- a/types/koa-generic-session/koa-generic-session-tests.ts
+++ b/types/koa-generic-session/koa-generic-session-tests.ts
@@ -32,4 +32,16 @@ app.use(session({
beforeSave: (ctx: Koa.Context, session: Session) => {}
}));
+app.use((context: Koa.Context) => {
+ if (! context.session) {
+ return;
+ }
+
+ context.regenerateSession();
+ context.sessionSave = true;
+ context.session.cookie;
+ context.session.key = 'value';
+ context.session = null;
+});
+
app.listen(80);