From 4efc533cab7c222ff2a2510bfb6e7a23106fb5b5 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 16 Nov 2015 15:13:13 -0800 Subject: [PATCH 1/5] Use typed method override. --- method-override/method-override-tests.ts | 1 + method-override/method-override.d.ts | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/method-override/method-override-tests.ts b/method-override/method-override-tests.ts index 84b4e966e..9023135d1 100644 --- a/method-override/method-override-tests.ts +++ b/method-override/method-override-tests.ts @@ -5,6 +5,7 @@ import methodOverride = require('method-override'); var app = express(); app.use(methodOverride('X-HTTP-Method-Override')); +app.use(methodOverride('X-HTTP-Method-Override', { methods: ["GET", 'POST'] })); app.use(methodOverride((req: express.Request, res: express.Response) => { if (req.body && typeof req.body === 'object' && '_method' in req.body) { // look in urlencoded POST bodies and delete it diff --git a/method-override/method-override.d.ts b/method-override/method-override.d.ts index 099b5eeb9..cd7e8dc4c 100644 --- a/method-override/method-override.d.ts +++ b/method-override/method-override.d.ts @@ -13,12 +13,15 @@ declare module Express { declare module "method-override" { import express = require('express'); - module e { - interface MethodOverrideOptions { + + namespace e { + export interface MethodOverrideOptions { methods: string[]; } } - function e(getter: string, options?: any): express.RequestHandler; - function e(getter: (req: express.Request, res: express.Response) => string, options?: any): express.RequestHandler; + + function e(getter: string, options?: e.MethodOverrideOptions): express.RequestHandler; + function e(getter: (req: express.Request, res: express.Response) => string, options?: e.MethodOverrideOptions): express.RequestHandler; + export = e; } \ No newline at end of file From 2b58083c57296eca8691d258edb9cbb6b17f2b95 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 16 Nov 2015 15:17:11 -0800 Subject: [PATCH 2/5] Made 'getter' optional. --- method-override/method-override.d.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/method-override/method-override.d.ts b/method-override/method-override.d.ts index cd7e8dc4c..22e3b74c1 100644 --- a/method-override/method-override.d.ts +++ b/method-override/method-override.d.ts @@ -19,9 +19,9 @@ declare module "method-override" { methods: string[]; } } - - function e(getter: string, options?: e.MethodOverrideOptions): express.RequestHandler; - function e(getter: (req: express.Request, res: express.Response) => string, options?: e.MethodOverrideOptions): express.RequestHandler; + + function e(getter?: string, options?: e.MethodOverrideOptions): express.RequestHandler; + function e(getter?: (req: express.Request, res: express.Response) => string, options?: e.MethodOverrideOptions): express.RequestHandler; export = e; } \ No newline at end of file From 0932a926dc2c033220bd9970abe8f10eca287a7c Mon Sep 17 00:00:00 2001 From: tkqubo Date: Mon, 28 Sep 2015 00:44:02 +0900 Subject: [PATCH 3/5] Add flux-standard-action --- .../flux-standard-action-tests.ts | 26 +++++++++++++++++ .../flux-standard-action.d.ts | 29 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 flux-standard-action/flux-standard-action-tests.ts create mode 100644 flux-standard-action/flux-standard-action.d.ts diff --git a/flux-standard-action/flux-standard-action-tests.ts b/flux-standard-action/flux-standard-action-tests.ts new file mode 100644 index 000000000..9c54d810d --- /dev/null +++ b/flux-standard-action/flux-standard-action-tests.ts @@ -0,0 +1,26 @@ +/// + +//import action = require('flux-standard-action'); +import { isError, isFSA, Action, ErrorAction } from 'flux-standard-action'; + +interface TextPayload { + text: string; +} + +var sample1: Action = { + type: 'ADD_TODO', + payload: { + text: 'Do something.' + } +}; + +var sample2: ErrorAction = { + type: 'ADD_TODO', + payload: new Error(), + error: true +}; + +var result1: boolean = isError(sample1); +var result2: boolean = isFSA(sample1); +var result3: boolean = isError(sample2); +var result4: boolean = isFSA(sample2); diff --git a/flux-standard-action/flux-standard-action.d.ts b/flux-standard-action/flux-standard-action.d.ts new file mode 100644 index 000000000..0c8f16727 --- /dev/null +++ b/flux-standard-action/flux-standard-action.d.ts @@ -0,0 +1,29 @@ +// Type definitions for flux-standard-action 0.5.0 +// Project: https://github.com/acdlite/flux-standard-action +// Definitions by: Qubo +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module "flux-standard-action" { + export interface ErrorAction extends Action { + error: boolean; + } + + export interface Action { + type: string; + payload?: T; + error?: boolean; + } + + export interface AnyMeta { + meta: any + } + + export interface TypedMeta { + meta: T + } + + export function isFSA(action: Action): boolean; + + export function isError(action: Action): boolean; +} + From 534f4e5977c89db548bcf8dcd97bda8c4d8adda6 Mon Sep 17 00:00:00 2001 From: tkqubo Date: Mon, 28 Sep 2015 00:52:27 +0900 Subject: [PATCH 4/5] loosen type --- flux-standard-action/flux-standard-action.d.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/flux-standard-action/flux-standard-action.d.ts b/flux-standard-action/flux-standard-action.d.ts index 0c8f16727..e98d5eeb9 100644 --- a/flux-standard-action/flux-standard-action.d.ts +++ b/flux-standard-action/flux-standard-action.d.ts @@ -14,16 +14,18 @@ declare module "flux-standard-action" { error?: boolean; } + // Usage: var action: Action & AnyMeta; export interface AnyMeta { meta: any } + // Usage: var action: Action & TypedMeta; export interface TypedMeta { meta: T } - export function isFSA(action: Action): boolean; + export function isFSA(action: any): boolean; - export function isError(action: Action): boolean; + export function isError(action: any): boolean; } From fa49ff99c06c720c52e96e1e580a728e1327b6f7 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 17 Nov 2015 12:54:16 -0800 Subject: [PATCH 5/5] Don't use 'any' for 'errorhandler'. --- errorhandler/errorhandler-tests.ts | 10 ++++++++++ errorhandler/errorhandler.d.ts | 24 ++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/errorhandler/errorhandler-tests.ts b/errorhandler/errorhandler-tests.ts index 1d02ed14c..0ba9edb56 100644 --- a/errorhandler/errorhandler-tests.ts +++ b/errorhandler/errorhandler-tests.ts @@ -5,3 +5,13 @@ import errorhandler = require('errorhandler'); var app = express(); app.use(errorhandler()); + +app.use(errorhandler({ log: true })); + +app.use(errorhandler({ log: (err, str, req, res) => { + const { message, name, stack } = err; + const messageIsStr = message === str; + + const requestWasFresh = req && req.fresh; + const responseContentType = res && res.contentType +}})) \ No newline at end of file diff --git a/errorhandler/errorhandler.d.ts b/errorhandler/errorhandler.d.ts index 40f845d09..8ae5e924c 100644 --- a/errorhandler/errorhandler.d.ts +++ b/errorhandler/errorhandler.d.ts @@ -7,6 +7,26 @@ declare module "errorhandler" { import express = require('express'); - function e(options?: {log?: any}): express.ErrorRequestHandler; - export = e; + + function errorHandler(options?: errorHandler.Options): express.ErrorRequestHandler; + + namespace errorHandler { + interface LoggingCallback { + (err: Error, str: string, req: express.Request, res: express.Response): void; + } + + interface Options { + /** + * Defaults to true. + * + * Possible values: + * true : Log errors using console.error(str). + * false : Only send the error back in the response. + * A function : pass the error to a function for handling. + */ + log: boolean | LoggingCallback; + } + } + + export = errorHandler; }