Add type definitions for the connect-azuretables package (#39403)

This commit is contained in:
Mikael Brevik 2019-10-25 22:25:54 +02:00 committed by Wesley Wigham
parent 88e2d21b96
commit e2b59498db
4 changed files with 123 additions and 0 deletions

View File

@ -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();

34
types/connect-azuretables/index.d.ts vendored Normal file
View File

@ -0,0 +1,34 @@
// Type definitions for connect-azuretables 1.0
// Project: https://github.com/mike-goodwin/connect-azuretables
// Definitions by: Mikael Brevik <https://github.com/mikaelbr>
// 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;

View File

@ -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"
]
}

View File

@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }