diff --git a/types/connect-azuretables/connect-azuretables-tests.ts b/types/connect-azuretables/connect-azuretables-tests.ts new file mode 100644 index 0000000000..962feec806 --- /dev/null +++ b/types/connect-azuretables/connect-azuretables-tests.ts @@ -0,0 +1,65 @@ +import express = require('express'); +import session = require('express-session'); +import connectAzureTables = require('connect-azuretables'); + +const app = express(); + +/// Create Azure Tables Store Factory + +const AzureTablesStoreFactory = connectAzureTables(session); + +/// Use AzureTableStore + +// Default settings +app.use( + session({ + secret: 'secret', + store: AzureTablesStoreFactory.create({}), + }), +); + +// Loggers +app.use( + session({ + secret: 'secret', + store: AzureTablesStoreFactory.create({ + logger: console.log, + errorLogger: console.error, + }), + }), +); + +// Override Azure Table keys +app.use( + session({ + secret: 'secret', + store: AzureTablesStoreFactory.create({ + accessKey: '', + storageAccount: '', + table: '', + }), + }), +); + +// Override cron settings and timeout +app.use( + session({ + secret: 'secret', + store: AzureTablesStoreFactory.create({ + overrideCron: '', + sessionTimeOut: 30, + }), + }), +); + +// Manual methods + +const store = AzureTablesStoreFactory.create({}); +app.use( + session({ + secret: 'secret', + store, + }), +); + +store.startBackgroundCleanUp(); diff --git a/types/connect-azuretables/index.d.ts b/types/connect-azuretables/index.d.ts new file mode 100644 index 0000000000..f875181813 --- /dev/null +++ b/types/connect-azuretables/index.d.ts @@ -0,0 +1,34 @@ +// Type definitions for connect-azuretables 1.0 +// Project: https://github.com/mike-goodwin/connect-azuretables +// Definitions by: Mikael Brevik +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.3 + +import * as express from 'express'; +import * as session from 'express-session'; + +declare function connectAzureTable( + session: (options?: session.SessionOptions) => express.RequestHandler, +): connectAzureTable.AzureTableStoreFactory; + +declare namespace connectAzureTable { + interface AzureTableStoreFactory { + create(options: AzureTableStoreOptions): AzureTableStore; + } + interface AzureTableStore extends session.Store { + startBackgroundCleanUp(): void; + cleanUp(): void; + update(method: 'SET' | 'TOUCH', sid: string, session: Express.SessionData, callback?: (err: any) => void): void; + } + interface AzureTableStoreOptions { + logger?: (message: string) => void; + errorLogger?: (message: string) => void; + sessionTimeOut?: number; // sessionTimeOut in minutes + overrideCron?: string; // cron job description + storageAccount?: string; + accessKey?: string; + table?: string; + } +} + +export = connectAzureTable; diff --git a/types/connect-azuretables/tsconfig.json b/types/connect-azuretables/tsconfig.json new file mode 100644 index 0000000000..501c73a0fb --- /dev/null +++ b/types/connect-azuretables/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "connect-azuretables-tests.ts" + ] +} diff --git a/types/connect-azuretables/tslint.json b/types/connect-azuretables/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/connect-azuretables/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }