diff --git a/types/koa-generic-session/index.d.ts b/types/koa-generic-session/index.d.ts
index f3a84e7b20..1bd8f366e0 100644
--- a/types/koa-generic-session/index.d.ts
+++ b/types/koa-generic-session/index.d.ts
@@ -1,13 +1,15 @@
// 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
+// TypeScript Version: 2.3
import * as Koa from "koa";
declare namespace koaSession {
interface Session {
cookie: any;
+ [key: string]: any;
}
interface SessionIdStore {
@@ -50,5 +52,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..e9a4f94232 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);