diff --git a/types/koa-generic-session/index.d.ts b/types/koa-generic-session/index.d.ts new file mode 100644 index 0000000000..f3a84e7b20 --- /dev/null +++ b/types/koa-generic-session/index.d.ts @@ -0,0 +1,54 @@ +// Type definitions for koa-generic-session 1.x +// Project: https://github.com/koajs/generic-session +// Definitions by: Nick Simmons +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import * as Koa from "koa"; + +declare namespace koaSession { + interface Session { + cookie: any; + } + + interface SessionIdStore { + get(): any; + set(sid: string, session: Session): void; + reset(): void; + } + + interface SessionStore { + (): SessionStore; + get(sid: string): any; + set(sid: string, session: Session, ttl: number): void; + destroy(sid: string): void; + } + + interface SessionOptions { + key?: string; + store?: SessionStore; + ttl?: number; + prefix?: string; + cookie?: { + path?: string; + rewrite?: boolean; + signed?: boolean; + maxAge?: number; + secure?: boolean; + httpOnly?: boolean; + }; + allowEmpty?: boolean; + defer?: boolean; + reconnectTimeout?: number; + rolling?: boolean; + sessionIdStore?: SessionIdStore; + genSid?(length: number): string; + errorHandler?(error: Error, type: string, ctx: Koa.Context): void; + valid?(ctx: Koa.Context, session: Session): boolean; + beforeSave?(ctx: Koa.Context, session: Session): void; + } + + const MemoryStore: SessionStore; +} + +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 new file mode 100644 index 0000000000..fb8d69b0e0 --- /dev/null +++ b/types/koa-generic-session/koa-generic-session-tests.ts @@ -0,0 +1,35 @@ +import * as Koa from "koa"; +import {MemoryStore, Session} from "koa-generic-session"; +import session = require("koa-generic-session"); + +const app = new Koa(); + +app.use(session({ + key: 'sessionKey', + store: MemoryStore(), + ttl: 60 * 60, + prefix: 'a-prefix', + cookie: { + path: '/test', + rewrite: false, + signed: false, + maxAge: 60 * 60, + secure: true, + httpOnly: true, + }, + allowEmpty: false, + defer: false, + reconnectTimeout: 100, + rolling: false, + sessionIdStore: { + get: () => 'something', + set: (sid: string, session: Session) => {}, + reset: () => {} + }, + genSid: (length: number) => 'aSid', + errorHandler: (error: Error, type: string, ctx: Koa.Context) => {}, + valid: (ctx: Koa.Context, session: Session) => true, + beforeSave: (ctx: Koa.Context, session: Session) => {} +})); + +app.listen(80); diff --git a/types/koa-generic-session/tsconfig.json b/types/koa-generic-session/tsconfig.json new file mode 100644 index 0000000000..b4cf43dab8 --- /dev/null +++ b/types/koa-generic-session/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "koa-generic-session-tests.ts" + ] +} \ No newline at end of file diff --git a/types/koa-generic-session/tslint.json b/types/koa-generic-session/tslint.json new file mode 100644 index 0000000000..2750cc0197 --- /dev/null +++ b/types/koa-generic-session/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } \ No newline at end of file