From 1fcbed38d7c6fba044007b4d8c8fe9b5fa0c2336 Mon Sep 17 00:00:00 2001 From: Pasi Eronen Date: Tue, 3 Oct 2017 21:04:10 +0300 Subject: [PATCH] connect-pg-simple: add types (#20109) * connect-pg-simple: add types * connect-pg-simple: PGStoreOptions should be optional * connect-pg-simple: add close and pruneSessions methods * connect-pg-simple: use correct import form in tests --- .../connect-pg-simple-tests.ts | 44 +++++++++++++++++++ types/connect-pg-simple/index.d.ts | 33 ++++++++++++++ types/connect-pg-simple/tsconfig.json | 22 ++++++++++ types/connect-pg-simple/tslint.json | 1 + 4 files changed, 100 insertions(+) create mode 100644 types/connect-pg-simple/connect-pg-simple-tests.ts create mode 100644 types/connect-pg-simple/index.d.ts create mode 100644 types/connect-pg-simple/tsconfig.json create mode 100644 types/connect-pg-simple/tslint.json diff --git a/types/connect-pg-simple/connect-pg-simple-tests.ts b/types/connect-pg-simple/connect-pg-simple-tests.ts new file mode 100644 index 0000000000..1e90c9b4e5 --- /dev/null +++ b/types/connect-pg-simple/connect-pg-simple-tests.ts @@ -0,0 +1,44 @@ +import connectPgSimple = require("connect-pg-simple"); +import * as session from "express-session"; +import * as pg from "pg"; +import * as express from "express"; + +const pgSession = connectPgSimple(session); + +const pgPool = new pg.Pool({}); +const store1: session.Store = new pgSession({ + pool: pgPool, + tableName: "user_sessions", + pruneSessionInterval: 300 +}); + +const app = express(); +app.use(session({ + store: store1, + secret: "foo" +})); + +const store2: session.Store = new pgSession({ + conString: "postgres://postgres@localhost:5432/foo", + ttl: 3600, + schemaName: "someschema", + pruneSessionInterval: false, + errorLog: (...args) => console.error(...args) +}); + +const store3 = new pgSession({ + conObject: { + host: "localhost", + user: "database-user", + max: 20, + idleTimeoutMillis: 30000 + } +}); + +const store4 = new pgSession(); + +store4.close(); + +store4.pruneSessions(); + +store4.pruneSessions(err => console.log(err)); diff --git a/types/connect-pg-simple/index.d.ts b/types/connect-pg-simple/index.d.ts new file mode 100644 index 0000000000..2337eef86b --- /dev/null +++ b/types/connect-pg-simple/index.d.ts @@ -0,0 +1,33 @@ +// Type definitions for connect-pg-simple 4.2 +// Project: https://github.com/voxpelli/node-connect-pg-simple#readme +// Definitions by: Pasi Eronen +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.4 + +import { RequestHandler } from "express"; +import { Store, SessionOptions } from "express-session"; +import { Pool, PoolConfig } from "pg"; + +declare function connectPgSimple(session: (options?: SessionOptions) => RequestHandler): typeof connectPgSimple.PGStore; + +declare namespace connectPgSimple { + class PGStore extends Store { + constructor(options?: PGStoreOptions); + close(): void; + pruneSessions(callback?: (err: Error) => void): void; + } + interface PGStoreOptions { + pool?: Pool; + pgPromise?: object; // not typed to avoid dependency to "pg-promise" module (which includes its own types) + conString?: string; + conObject?: PoolConfig; + ttl?: number; + schemaName?: string; + tableName?: string; + pruneSessionInterval?: false | number; + // tslint:disable-next-line:prefer-method-signature + errorLog?: (...args: any[]) => void; + } +} + +export = connectPgSimple; diff --git a/types/connect-pg-simple/tsconfig.json b/types/connect-pg-simple/tsconfig.json new file mode 100644 index 0000000000..d192ede32f --- /dev/null +++ b/types/connect-pg-simple/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", + "connect-pg-simple-tests.ts" + ] +} diff --git a/types/connect-pg-simple/tslint.json b/types/connect-pg-simple/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/connect-pg-simple/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }