Compare commits

...

2 Commits

Author SHA1 Message Date
e149b5a5f1 1.0.32 2020-06-16 15:03:11 +00:00
2879fb8cee fix(core): update 2020-06-16 15:03:10 +00:00
4 changed files with 34 additions and 4 deletions

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "@apiglobal/typedrequest",
"version": "1.0.31",
"version": "1.0.32",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "@apiglobal/typedrequest",
"version": "1.0.31",
"version": "1.0.32",
"private": false,
"description": "make typed requests towards apis",
"main": "dist_ts/index.js",

View File

@ -1,4 +1,5 @@
import * as plugins from './typedrequest.plugins';
import { TypedResponseError } from './typedrequest.classes.typedresponseerror';
type THandlerFunction<T extends plugins.typedRequestInterfaces.ITypedRequest> = (
requestArg: T['request']
@ -26,8 +27,27 @@ export class TypedHandler<T extends plugins.typedRequestInterfaces.ITypedRequest
'this handler has been given a wrong method to answer to. Please use a TypedRouter to filter requests'
);
}
const response = await this.handlerFunction(typedRequestArg.request);
typedRequestArg.response = response;
let typedResponseError: TypedResponseError;
const response = await this.handlerFunction(typedRequestArg.request).catch(e => {
if (e instanceof TypedResponseError) {
typedResponseError = e;
} else {
throw e;
}
});
if (typedResponseError) {
typedRequestArg.error = {
text: typedResponseError.errorText,
data: typedResponseError.errorData
};
}
if (response) {
typedRequestArg.response = response;
}
return typedRequestArg;
}
}

View File

@ -0,0 +1,10 @@
import * as plugins from './typedrequest.plugins';
export class TypedResponseError {
public errorText: string;
public errorData: any;
constructor(errorTextArg: string, errorDataArg: any) {
this.errorText = errorTextArg;
this.errorData = errorDataArg;
}
}